
bfd_boolean handle_asneeded_cref(bfd *abfd,notice_asneeded_action act)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int *piVar6;
  undefined4 uVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  undefined4 uVar11;
  int *piVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined4 *puVar17;
  uint uVar18;
  
  puVar4 = PTR_memcpy_001dc0e4;
  puVar3 = PTR_DAT_001db8f8;
  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {
    if (act != notice_as_needed) {
      if (act == notice_not_needed) {
        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);
        if (iVar16 == 0) {
          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);
          *(undefined4 *)(puVar3 + -0x3a28) = 0;
          return 1;
        }
        uVar18 = 0;
        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);
        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);
        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);
        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;
        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);
        (*(code *)puVar4)(uVar7,iVar16);
        iVar16 = *(int *)(puVar3 + -0x3a18);
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);
        if (iVar16 != 0) {
          iVar16 = *(int *)(puVar3 + -0x3a24);
          do {
            iVar16 = *(int *)(iVar16 + uVar18 * 4);
            while (iVar16 != 0) {
              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)
                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));
              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);
              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {
                uVar11 = puVar17[1];
                uVar7 = puVar17[2];
                *piVar12 = *puVar17;
                piVar12[1] = uVar11;
                piVar12[2] = uVar7;
                puVar17 = puVar17 + 3;
              }
              iVar16 = *piVar8;
            }
            uVar18 = uVar18 + 1;
            iVar16 = *(int *)(puVar3 + -0x3a24);
          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));
        }
        (*(code *)PTR_objalloc_free_block_001dbf20)
                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));
      }
      else if (act != notice_needed) {
        return 0;
      }
      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));
      *(undefined4 *)(puVar3 + -0x3a3c) = 0;
      return 1;
    }
    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);
    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);
    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);
    if (iVar13 == 0) {
      iVar14 = 0;
    }
    else {
      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);
      iVar14 = iVar13 * 4;
      bVar2 = false;
      bVar1 = false;
      piVar8 = piVar12 + iVar13;
      iVar13 = iVar16;
      iVar10 = iVar15;
      do {
        piVar9 = (int *)*piVar12;
        if (piVar9 != (int *)0x0) {
          do {
            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);
            piVar6 = (int *)piVar9[4];
            if (piVar6 != (int *)0x0) {
              do {
                iVar13 = iVar13 + 0xc;
                piVar6 = (int *)*piVar6;
              } while (piVar6 != (int *)0x0);
              bVar1 = true;
            }
            piVar9 = (int *)*piVar9;
          } while (piVar9 != (int *)0x0);
          bVar2 = true;
        }
        piVar12 = piVar12 + 1;
      } while (piVar8 != piVar12);
      if (bVar1) {
        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;
        iVar16 = iVar13;
      }
      if (bVar2) {
        *(int *)(puVar3 + -0x3a48) = iVar10;
        iVar15 = iVar10;
      }
    }
    puVar5 = PTR_xmalloc_001dc03c;
    puVar4 = PTR_DAT_001db8f8;
    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;
    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);
    puVar5 = PTR_bfd_hash_allocate_001dbfdc;
    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;
    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);
    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;
    if (iVar16 == 0) {
      return 0;
    }
    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);
    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));
    iVar15 = *(int *)(puVar3 + -0x3a24);
    iVar13 = *(int *)(puVar3 + -0x3a18);
    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);
    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);
    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));
    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;
    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;
    if (iVar13 != 0) {
      iVar13 = 0;
      uVar18 = 0;
      while( true ) {
        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)
        {
          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));
          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);
          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {
            uVar11 = piVar8[1];
            uVar7 = piVar8[2];
            *puVar17 = *piVar8;
            puVar17[1] = uVar11;
            puVar17[2] = uVar7;
            puVar17 = puVar17 + 3;
          }
        }
        uVar18 = uVar18 + 1;
        iVar15 = *(int *)(puVar3 + -0x3a24);
        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;
        iVar13 = uVar18 * 4;
      }
    }
  }
  return 1;
}



undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int *piVar6;
  undefined4 uVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  undefined4 uVar11;
  int *piVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined4 *puVar17;
  uint uVar18;
  
  puVar4 = PTR_memcpy_001dc0e4;
  puVar3 = PTR_DAT_001db8f8;
  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {
    if (param_2 != 0) {
      if (param_2 == 1) {
        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);
        if (iVar16 == 0) {
          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);
          *(undefined4 *)(puVar3 + -0x3a28) = 0;
          return 1;
        }
        uVar18 = 0;
        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);
        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);
        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);
        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;
        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);
        (*(code *)puVar4)(uVar7,iVar16);
        iVar16 = *(int *)(puVar3 + -0x3a18);
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);
        if (iVar16 != 0) {
          iVar16 = *(int *)(puVar3 + -0x3a24);
          do {
            iVar16 = *(int *)(iVar16 + uVar18 * 4);
            while (iVar16 != 0) {
              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)
                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));
              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);
              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {
                uVar11 = puVar17[1];
                uVar7 = puVar17[2];
                *piVar12 = *puVar17;
                piVar12[1] = uVar11;
                piVar12[2] = uVar7;
                puVar17 = puVar17 + 3;
              }
              iVar16 = *piVar8;
            }
            uVar18 = uVar18 + 1;
            iVar16 = *(int *)(puVar3 + -0x3a24);
          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));
        }
        (*(code *)PTR_objalloc_free_block_001dbf20)
                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));
      }
      else if (param_2 != 2) {
        return 0;
      }
      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));
      *(undefined4 *)(puVar3 + -0x3a3c) = 0;
      return 1;
    }
    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);
    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);
    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);
    if (iVar13 == 0) {
      iVar14 = 0;
    }
    else {
      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);
      iVar14 = iVar13 * 4;
      bVar2 = false;
      bVar1 = false;
      piVar8 = piVar12 + iVar13;
      iVar13 = iVar16;
      iVar10 = iVar15;
      do {
        piVar9 = (int *)*piVar12;
        if (piVar9 != (int *)0x0) {
          do {
            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);
            piVar6 = (int *)piVar9[4];
            if (piVar6 != (int *)0x0) {
              do {
                iVar13 = iVar13 + 0xc;
                piVar6 = (int *)*piVar6;
              } while (piVar6 != (int *)0x0);
              bVar1 = true;
            }
            piVar9 = (int *)*piVar9;
          } while (piVar9 != (int *)0x0);
          bVar2 = true;
        }
        piVar12 = piVar12 + 1;
      } while (piVar8 != piVar12);
      if (bVar1) {
        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;
        iVar16 = iVar13;
      }
      if (bVar2) {
        *(int *)(puVar3 + -0x3a48) = iVar10;
        iVar15 = iVar10;
      }
    }
    puVar5 = PTR_xmalloc_001dc03c;
    puVar4 = PTR_DAT_001db8f8;
    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;
    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);
    puVar5 = PTR_bfd_hash_allocate_001dbfdc;
    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;
    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);
    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;
    if (iVar16 == 0) {
      return 0;
    }
    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);
    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));
    iVar15 = *(int *)(puVar3 + -0x3a24);
    iVar13 = *(int *)(puVar3 + -0x3a18);
    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);
    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);
    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));
    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;
    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;
    if (iVar13 != 0) {
      iVar13 = 0;
      uVar18 = 0;
      while( true ) {
        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)
        {
          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));
          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);
          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {
            uVar11 = piVar8[1];
            uVar7 = piVar8[2];
            *puVar17 = *piVar8;
            puVar17[1] = uVar11;
            puVar17[2] = uVar7;
            puVar17 = puVar17 + 3;
          }
        }
        uVar18 = uVar18 + 1;
        iVar15 = *(int *)(puVar3 + -0x3a24);
        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;
        iVar13 = uVar18 * 4;
      }
    }
  }
  return 1;
}


lui gp,0x1a
addiu gp,gp,0x5e30
addu gp,gp,t9
addiu sp,sp,-0x38
sw s0,0x1c(sp)
lw s0,-0x7fd8(gp)
sw gp,0x10(sp)
sw ra,0x34(sp)
sw s5,0x30(sp)
sw s4,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
lw v0,-0x3a28(s0)
beq v0,zero,0x0003db74
_nop
bne a1,zero,0x0003db9c
_or s2,a1,zero
lw s1,-0x7fd8(gp)
lw s0,-0x7fd8(gp)
lw t5,-0x7fd8(gp)
addiu s3,s1,-0x3a24
lw t3,-0x3a48(s0)
lw t2,0xc(s3)
beq t2,zero,0x0003deb8
_lw t4,-0x3a4c(t5)
lw t0,-0x3a24(s1)
sll t2,t2,0x2
lw a3,0x14(s3)
or v0,zero,zero
or a0,zero,zero
addu t1,t2,t0
or a2,t3,zero
or v1,t4,zero
lw a1,0x0(t0)
beq a1,zero,0x0003dc18
_nop
addu a2,a2,a3
lw v0,0x10(a1)
beq v0,zero,0x0003db60
_nop
b 0x0003db50
_addiu v1,v1,0xc
or v1,a0,zero
lw v0,0x0(v0)
bne v0,zero,0x0003db4c
_addiu a0,v1,0xc
li a0,0x1
lw a1,0x0(a1)
beq a1,zero,0x0003dc14
_addu v0,a3,a2
b 0x0003db38
_or a2,v0,zero
li v0,0x1
lw ra,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,0x38
li v0,0x1
beq a1,v0,0x0003dd80
_li v0,0x2
bne a1,v0,0x0003dbf0
_lw ra,0x34(sp)
lw s4,-0x7fd8(gp)
lw t9,-0x77e4(gp)
jalr t9
_lw a0,-0x3a3c(s4)
li v0,0x1
lw ra,0x34(sp)
lw s5,0x30(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
sw zero,-0x3a3c(s4)
lw s4,0x2c(sp)
jr ra
_addiu sp,sp,0x38
lw ra,0x34(sp)
or v0,zero,zero
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,0x38
li v0,0x1
addiu t0,t0,0x4
bne t1,t0,0x0003db28
_nop
beq a0,zero,0x0003dd78
_nop
sw v1,-0x3a4c(t5)
beq v0,zero,0x0003debc
_nop
sw a2,-0x3a48(s0)
lw s4,-0x7fd8(gp)
addu a0,a2,t2
lw t9,-0x7894(gp)
addu a0,a0,v1
lw s5,-0x7fd8(gp)
jalr t9
_sw t2,-0x3a44(s4)
li a1,0x1
lw gp,0x10(sp)
addiu a0,s1,-0x3a24
lw t9,-0x78f4(gp)
jalr t9
_sw v0,-0x3a3c(s5)
lw gp,0x10(sp)
lw v1,-0x7fd8(gp)
beq v0,zero,0x0003dbec
_sw v0,-0x3a40(v1)
lw a0,-0x3a3c(s5)
lw a2,-0x3a44(s4)
lw t9,-0x77ec(gp)
lw a1,-0x3a24(s1)
jalr t9
_addu s5,a0,a2
lw gp,0x10(sp)
lw v0,-0x3a24(s1)
lw v1,0xc(s3)
lw a2,0x10(s3)
lw a0,-0x7fd8(gp)
lw s0,-0x3a48(s0)
lw a1,-0x3a2c(a0)
addu s0,s5,s0
lw a0,-0x7fd8(gp)
sw v0,-0x3a30(a0)
lw a0,-0x7fd8(gp)
sw v1,-0x3a34(a0)
lw a0,-0x7fd8(gp)
sw a2,-0x3a38(a0)
lw a0,-0x7fd8(gp)
beq v1,zero,0x0003db74
_sw a1,-0x3a50(a0)
sll v1,s2,0x2
addu v0,v0,v1
lw s4,0x0(v0)
beq s4,zero,0x0003dd5c
_lw t9,-0x77ec(gp)
or a0,s5,zero
lw a2,0x14(s3)
jalr t9
_or a1,s4,zero
lw v1,0x14(s3)
lw v0,0x10(s4)
lw gp,0x10(sp)
beq v0,zero,0x0003dd50
_addu s5,s5,v1
lwl a1,0x0(v0)
lwl a0,0x4(v0)
lwl v1,0x8(v0)
lwr a1,0x3(v0)
lwr a0,0x7(v0)
lwr v1,0xb(v0)
swl a1,0x0(s0)
swr a1,0x3(s0)
swl a0,0x4(s0)
swr a0,0x7(s0)
swl v1,0x8(s0)
swr v1,0xb(s0)
lw v0,0x0(v0)
bne v0,zero,0x0003dd14
_addiu s0,s0,0xc
lw s4,0x0(s4)
bne s4,zero,0x0003dcf0
_lw t9,-0x77ec(gp)
lw v0,0xc(s3)
addiu s2,s2,0x1
sltu v0,s2,v0
beq v0,zero,0x0003db74
_lw v0,-0x3a24(s1)
b 0x0003dce0
_sll v1,s2,0x2
b 0x0003dc30
_or v1,t4,zero
lw s4,-0x7fd8(gp)
lw s5,-0x3a3c(s4)
beq s5,zero,0x0003dec4
_lw v1,-0x7fd8(gp)
or a1,s5,zero
lw v0,-0x7fd8(gp)
or s2,zero,zero
lw s1,-0x7fd8(gp)
lw t9,-0x77ec(gp)
lw s0,-0x3a48(v1)
lw v1,-0x7fd8(gp)
addiu s3,s1,-0x3a24
lw a2,-0x3a44(v0)
lw v0,-0x7fd8(gp)
lw a3,-0x3a34(v1)
addu s5,s5,a2
lw v1,-0x7fd8(gp)
lw v0,-0x3a30(v0)
addu s0,s5,s0
sw a3,0xc(s3)
sw v0,-0x3a24(s1)
or a0,v0,zero
lw v1,-0x3a38(v1)
jalr t9
_sw v1,0x10(s3)
lw gp,0x10(sp)
lw v0,0xc(s3)
lw v1,-0x7fd8(gp)
lw a0,-0x3a50(v1)
lw v1,-0x7fd8(gp)
beq v0,zero,0x0003de9c
_sw a0,-0x3a2c(v1)
lw v0,-0x3a24(s1)
sll v1,s2,0x2
addu v0,v0,v1
lw a3,0x0(v0)
beq a3,zero,0x0003de88
_lw t9,-0x77ec(gp)
or a1,s5,zero
lw a2,0x14(s3)
jalr t9
_or a0,a3,zero
or a3,v0,zero
lw v1,0x14(s3)
lw v0,0x10(v0)
lw gp,0x10(sp)
beq v0,zero,0x0003de7c
_addu s5,s5,v1
lwl a1,0x0(s0)
lwl a0,0x4(s0)
lwl v1,0x8(s0)
lwr a1,0x3(s0)
lwr a0,0x7(s0)
lwr v1,0xb(s0)
swl a1,0x0(v0)
swr a1,0x3(v0)
swl a0,0x4(v0)
swr a0,0x7(v0)
swl v1,0x8(v0)
swr v1,0xb(v0)
lw v0,0x0(v0)
bne v0,zero,0x0003de40
_addiu s0,s0,0xc
lw a3,0x0(a3)
bne a3,zero,0x0003de18
_lw t9,-0x77ec(gp)
lw v0,0xc(s3)
addiu s2,s2,0x1
sltu v0,s2,v0
bne v0,zero,0x0003de04
_lw v0,-0x3a24(s1)
lw v0,-0x7fd8(gp)
lw t9,-0x79b0(gp)
lw a0,0x8(s3)
jalr t9
_lw a1,-0x3a40(v0)
b 0x0003dbb4
_lw gp,0x10(sp)
or v1,t4,zero
b 0x0003dc3c
_or a2,t3,zero
lw a0,-0x7fd8(gp)
lw t9,-0x7868(gp)
jalr t9
_addiu a0,a0,-0x3a24
li v0,0x1
b 0x0003db78
_sw zero,-0x3a28(s0)
(translation_unit "undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "handle_asneeded_cref(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "puVar4 = PTR_memcpy_001dc0e4;" (assignment_expression "puVar4 = PTR_memcpy_001dc0e4" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_001db8f8;" (assignment_expression "puVar3 = PTR_DAT_001db8f8" identifier = identifier) ;) (if_statement "if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0)" ( (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a28)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" { (if_statement "if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" { (if_statement "if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }" { (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a3c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a3c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a3c" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" { (expression_statement "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);" (call_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24)" (parenthesized_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)" ( (pointer_expression "*(code *)PTR_bfd_hash_table_free_001dc068" * (cast_expression "(code *)PTR_bfd_hash_table_free_001dc068" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a28) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a28) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a28)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a28)" ( (binary_expression "puVar3 + -0x3a28" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);" (assignment_expression "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier = (binary_expression "iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (binary_expression "iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a24) = uVar7;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a24) = uVar7" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38)" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a38)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a38)" ( (binary_expression "puVar3 + -0x3a38" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)puVar4)(uVar7,iVar16);" (call_expression "(*(code *)puVar4)(uVar7,iVar16)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar7,iVar16)" ( identifier , identifier ))) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" { (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (do_statement "do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));" do (compound_statement "{\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          }" { (expression_statement "iVar16 = *(int *)(iVar16 + uVar18 * 4);" (assignment_expression "iVar16 = *(int *)(iVar16 + uVar18 * 4)" identifier = (pointer_expression "*(int *)(iVar16 + uVar18 * 4)" * (cast_expression "(int *)(iVar16 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar18 * 4)" ( (binary_expression "iVar16 + uVar18 * 4" identifier + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (while_statement "while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" { (expression_statement "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));" (assignment_expression "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" identifier = (cast_expression "(int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar15 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" for ( (assignment_expression "piVar12 = (int *)piVar8[4]" identifier = (cast_expression "(int *)piVar8[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[4]" identifier [ number_literal ]))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" { (expression_statement "uVar11 = puVar17[1];" (assignment_expression "uVar11 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar17[2];" (assignment_expression "uVar7 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar12 = *puVar17;" (assignment_expression "*piVar12 = *puVar17" (pointer_expression "*piVar12" * identifier) = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "piVar12[1] = uVar11;" (assignment_expression "piVar12[1] = uVar11" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12[2] = uVar7;" (assignment_expression "piVar12[2] = uVar7" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) (expression_statement "iVar16 = *piVar8;" (assignment_expression "iVar16 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar18 < *(uint *)(puVar3 + -0x3a18))" ( (binary_expression "uVar18 < *(uint *)(puVar3 + -0x3a18)" identifier < (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) )) ;) })) (expression_statement "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));" (call_expression "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" (parenthesized_expression "(*(code *)PTR_objalloc_free_block_001dbf20)" ( (pointer_expression "*(code *)PTR_objalloc_free_block_001dbf20" * (cast_expression "(code *)PTR_objalloc_free_block_001dbf20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a1c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a1c)" ( (binary_expression "puVar3 + -0x3a1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (param_2 != 2) {\n        return 0;\n      }" else (if_statement "if (param_2 != 2) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 != 2)" ( (binary_expression "param_2 != 2" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })))) (expression_statement "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));" (call_expression "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c))" (parenthesized_expression "(*(code *)PTR_free_001dc0ec)" ( (pointer_expression "*(code *)PTR_free_001dc0ec" * (cast_expression "(code *)PTR_free_001dc0ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a3c))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a3c) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a3c) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar14 = 0;\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" else (compound_statement "{\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" { (expression_statement "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);" (assignment_expression "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24)" identifier = (pointer_expression "*(int **)(PTR_DAT_001db8f8 + -0x3a24)" * (cast_expression "(int **)(PTR_DAT_001db8f8 + -0x3a24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = iVar13 * 4;" (assignment_expression "iVar14 = iVar13 * 4" identifier = (binary_expression "iVar13 * 4" identifier * number_literal)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "piVar8 = piVar12 + iVar13;" (assignment_expression "piVar8 = piVar12 + iVar13" identifier = (binary_expression "piVar12 + iVar13" identifier + identifier)) ;) (expression_statement "iVar13 = iVar16;" (assignment_expression "iVar13 = iVar16" identifier = identifier) ;) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" identifier = identifier) ;) (do_statement "do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);" do (compound_statement "{\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      }" { (expression_statement "piVar9 = (int *)*piVar12;" (assignment_expression "piVar9 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" { (do_statement "do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);" do (compound_statement "{\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          }" { (expression_statement "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);" (assignment_expression "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier = (binary_expression "iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a10)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a10)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a10" identifier + number_literal) )))))) ;) (expression_statement "piVar6 = (int *)piVar9[4];" (assignment_expression "piVar6 = (int *)piVar9[4]" identifier = (cast_expression "(int *)piVar9[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" { (do_statement "do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);" do (compound_statement "{\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              }" { (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" identifier = (binary_expression "iVar13 + 0xc" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) }) while (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar12)" ( (binary_expression "piVar8 != piVar12" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" { (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = iVar13;" (assignment_expression "iVar16 = iVar13" identifier = identifier) ;) })) (if_statement "if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" { (expression_statement "*(int *)(puVar3 + -0x3a48) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x3a48) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iVar10;" (assignment_expression "iVar15 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "puVar5 = PTR_xmalloc_001dc03c;" (assignment_expression "puVar5 = PTR_xmalloc_001dc03c" identifier = identifier) ;) (expression_statement "puVar4 = PTR_DAT_001db8f8;" (assignment_expression "puVar4 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);" (assignment_expression "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16)" identifier = (call_expression "(*(code *)puVar5)(iVar15 + iVar14 + iVar16)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar15 + iVar14 + iVar16)" ( (binary_expression "iVar15 + iVar14 + iVar16" (binary_expression "iVar15 + iVar14" identifier + identifier) + identifier) )))) ;) (expression_statement "puVar5 = PTR_bfd_hash_allocate_001dbfdc;" (assignment_expression "puVar5 = PTR_bfd_hash_allocate_001dbfdc" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar4 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);" (assignment_expression "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1)" identifier = (call_expression "(*(code *)puVar5)(puVar3 + -0x3a24,1)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3 + -0x3a24,1)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) , number_literal )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar16 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);" (assignment_expression "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" identifier = (binary_expression "*(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar4 + -0x3a44)" * (cast_expression "(int *)(puVar4 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a44)" ( (binary_expression "puVar4 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" ( (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) ))) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(undefined4 *)(puVar3 + -0x3a14);" (assignment_expression "uVar11 = *(undefined4 *)(puVar3 + -0x3a14)" identifier = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a48)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a38)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" { (for_statement "for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" for ( (assignment_expression "piVar12 = *(int **)(iVar15 + iVar13)" identifier = (pointer_expression "*(int **)(iVar15 + iVar13)" * (cast_expression "(int **)(iVar15 + iVar13)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + iVar13)" ( (binary_expression "iVar15 + iVar13" identifier + identifier) ))))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" { (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))) ;) (expression_statement "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" for ( (assignment_expression "piVar8 = (int *)piVar12[4]" identifier = (cast_expression "(int *)piVar12[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ; (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar8 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ) (compound_statement "{\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" { (expression_statement "uVar11 = piVar8[1];" (assignment_expression "uVar11 = piVar8[1]" identifier = (subscript_expression "piVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = piVar8[2];" (assignment_expression "uVar7 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar17 = *piVar8;" (assignment_expression "*puVar17 = *piVar8" (pointer_expression "*puVar17" * identifier) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "puVar17[1] = uVar11;" (assignment_expression "puVar17[1] = uVar11" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17[2] = uVar7;" (assignment_expression "puVar17[2] = uVar7" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;" if (parenthesized_expression "(*(uint *)(puVar3 + -0x3a18) <= uVar18)" ( (binary_expression "*(uint *)(puVar3 + -0x3a18) <= uVar18" (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = uVar18 * 4;" (assignment_expression "iVar13 = uVar18 * 4" identifier = (binary_expression "uVar18 * 4" identifier * number_literal)) ;) })) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bfd_boolean handle_asneeded_cref(bfd *abfd,notice_asneeded_action act)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}\n\n" (function_definition "bfd_boolean handle_asneeded_cref(bfd *abfd,notice_asneeded_action act)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "handle_asneeded_cref(bfd *abfd,notice_asneeded_action act)" identifier (parameter_list "(bfd *abfd,notice_asneeded_action act)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "notice_asneeded_action act" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "puVar4 = PTR_memcpy_001dc0e4;" (assignment_expression "puVar4 = PTR_memcpy_001dc0e4" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_001db8f8;" (assignment_expression "puVar3 = PTR_DAT_001db8f8" identifier = identifier) ;) (if_statement "if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0)" ( (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a28)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" { (if_statement "if (act != notice_as_needed) {\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" if (parenthesized_expression "(act != notice_as_needed)" ( (binary_expression "act != notice_as_needed" identifier != identifier) )) (compound_statement "{\n      if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" { (if_statement "if (act == notice_not_needed) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (act != notice_needed) {\n        return 0;\n      }" if (parenthesized_expression "(act == notice_not_needed)" ( (binary_expression "act == notice_not_needed" identifier == identifier) )) (compound_statement "{\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }" { (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a3c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a3c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a3c" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" { (expression_statement "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);" (call_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24)" (parenthesized_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)" ( (pointer_expression "*(code *)PTR_bfd_hash_table_free_001dc068" * (cast_expression "(code *)PTR_bfd_hash_table_free_001dc068" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a28) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a28) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a28)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a28)" ( (binary_expression "puVar3 + -0x3a28" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);" (assignment_expression "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier = (binary_expression "iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (binary_expression "iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a24) = uVar7;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a24) = uVar7" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38)" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a38)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a38)" ( (binary_expression "puVar3 + -0x3a38" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)puVar4)(uVar7,iVar16);" (call_expression "(*(code *)puVar4)(uVar7,iVar16)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar7,iVar16)" ( identifier , identifier ))) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" { (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (do_statement "do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));" do (compound_statement "{\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          }" { (expression_statement "iVar16 = *(int *)(iVar16 + uVar18 * 4);" (assignment_expression "iVar16 = *(int *)(iVar16 + uVar18 * 4)" identifier = (pointer_expression "*(int *)(iVar16 + uVar18 * 4)" * (cast_expression "(int *)(iVar16 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar18 * 4)" ( (binary_expression "iVar16 + uVar18 * 4" identifier + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (while_statement "while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" { (expression_statement "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));" (assignment_expression "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" identifier = (cast_expression "(int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar15 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" for ( (assignment_expression "piVar12 = (int *)piVar8[4]" identifier = (cast_expression "(int *)piVar8[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[4]" identifier [ number_literal ]))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" { (expression_statement "uVar11 = puVar17[1];" (assignment_expression "uVar11 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar17[2];" (assignment_expression "uVar7 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar12 = *puVar17;" (assignment_expression "*piVar12 = *puVar17" (pointer_expression "*piVar12" * identifier) = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "piVar12[1] = uVar11;" (assignment_expression "piVar12[1] = uVar11" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12[2] = uVar7;" (assignment_expression "piVar12[2] = uVar7" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) (expression_statement "iVar16 = *piVar8;" (assignment_expression "iVar16 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar18 < *(uint *)(puVar3 + -0x3a18))" ( (binary_expression "uVar18 < *(uint *)(puVar3 + -0x3a18)" identifier < (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) )) ;) })) (expression_statement "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));" (call_expression "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" (parenthesized_expression "(*(code *)PTR_objalloc_free_block_001dbf20)" ( (pointer_expression "*(code *)PTR_objalloc_free_block_001dbf20" * (cast_expression "(code *)PTR_objalloc_free_block_001dbf20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a1c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a1c)" ( (binary_expression "puVar3 + -0x3a1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (act != notice_needed) {\n        return 0;\n      }" else (if_statement "if (act != notice_needed) {\n        return 0;\n      }" if (parenthesized_expression "(act != notice_needed)" ( (binary_expression "act != notice_needed" identifier != identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })))) (expression_statement "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));" (call_expression "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c))" (parenthesized_expression "(*(code *)PTR_free_001dc0ec)" ( (pointer_expression "*(code *)PTR_free_001dc0ec" * (cast_expression "(code *)PTR_free_001dc0ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a3c))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a3c) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a3c) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar14 = 0;\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" else (compound_statement "{\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" { (expression_statement "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);" (assignment_expression "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24)" identifier = (pointer_expression "*(int **)(PTR_DAT_001db8f8 + -0x3a24)" * (cast_expression "(int **)(PTR_DAT_001db8f8 + -0x3a24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = iVar13 * 4;" (assignment_expression "iVar14 = iVar13 * 4" identifier = (binary_expression "iVar13 * 4" identifier * number_literal)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "piVar8 = piVar12 + iVar13;" (assignment_expression "piVar8 = piVar12 + iVar13" identifier = (binary_expression "piVar12 + iVar13" identifier + identifier)) ;) (expression_statement "iVar13 = iVar16;" (assignment_expression "iVar13 = iVar16" identifier = identifier) ;) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" identifier = identifier) ;) (do_statement "do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);" do (compound_statement "{\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      }" { (expression_statement "piVar9 = (int *)*piVar12;" (assignment_expression "piVar9 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" { (do_statement "do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);" do (compound_statement "{\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          }" { (expression_statement "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);" (assignment_expression "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier = (binary_expression "iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a10)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a10)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a10" identifier + number_literal) )))))) ;) (expression_statement "piVar6 = (int *)piVar9[4];" (assignment_expression "piVar6 = (int *)piVar9[4]" identifier = (cast_expression "(int *)piVar9[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" { (do_statement "do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);" do (compound_statement "{\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              }" { (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" identifier = (binary_expression "iVar13 + 0xc" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) }) while (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar12)" ( (binary_expression "piVar8 != piVar12" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" { (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = iVar13;" (assignment_expression "iVar16 = iVar13" identifier = identifier) ;) })) (if_statement "if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" { (expression_statement "*(int *)(puVar3 + -0x3a48) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x3a48) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iVar10;" (assignment_expression "iVar15 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "puVar5 = PTR_xmalloc_001dc03c;" (assignment_expression "puVar5 = PTR_xmalloc_001dc03c" identifier = identifier) ;) (expression_statement "puVar4 = PTR_DAT_001db8f8;" (assignment_expression "puVar4 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);" (assignment_expression "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16)" identifier = (call_expression "(*(code *)puVar5)(iVar15 + iVar14 + iVar16)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar15 + iVar14 + iVar16)" ( (binary_expression "iVar15 + iVar14 + iVar16" (binary_expression "iVar15 + iVar14" identifier + identifier) + identifier) )))) ;) (expression_statement "puVar5 = PTR_bfd_hash_allocate_001dbfdc;" (assignment_expression "puVar5 = PTR_bfd_hash_allocate_001dbfdc" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar4 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);" (assignment_expression "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1)" identifier = (call_expression "(*(code *)puVar5)(puVar3 + -0x3a24,1)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3 + -0x3a24,1)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) , number_literal )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar16 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);" (assignment_expression "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" identifier = (binary_expression "*(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar4 + -0x3a44)" * (cast_expression "(int *)(puVar4 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a44)" ( (binary_expression "puVar4 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" ( (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) ))) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(undefined4 *)(puVar3 + -0x3a14);" (assignment_expression "uVar11 = *(undefined4 *)(puVar3 + -0x3a14)" identifier = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a48)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a38)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" { (for_statement "for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" for ( (assignment_expression "piVar12 = *(int **)(iVar15 + iVar13)" identifier = (pointer_expression "*(int **)(iVar15 + iVar13)" * (cast_expression "(int **)(iVar15 + iVar13)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + iVar13)" ( (binary_expression "iVar15 + iVar13" identifier + identifier) ))))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" { (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))) ;) (expression_statement "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" for ( (assignment_expression "piVar8 = (int *)piVar12[4]" identifier = (cast_expression "(int *)piVar12[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ; (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar8 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ) (compound_statement "{\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" { (expression_statement "uVar11 = piVar8[1];" (assignment_expression "uVar11 = piVar8[1]" identifier = (subscript_expression "piVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = piVar8[2];" (assignment_expression "uVar7 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar17 = *piVar8;" (assignment_expression "*puVar17 = *piVar8" (pointer_expression "*puVar17" * identifier) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "puVar17[1] = uVar11;" (assignment_expression "puVar17[1] = uVar11" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17[2] = uVar7;" (assignment_expression "puVar17[2] = uVar7" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;" if (parenthesized_expression "(*(uint *)(puVar3 + -0x3a18) <= uVar18)" ( (binary_expression "*(uint *)(puVar3 + -0x3a18) <= uVar18" (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = uVar18 * 4;" (assignment_expression "iVar13 = uVar18 * 4" identifier = (binary_expression "uVar18 * 4" identifier * number_literal)) ;) })) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}\n\n" (function_definition "undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" type_identifier (function_declarator "handle_asneeded_cref(undefined4 param_1,int param_2)" identifier (parameter_list "(undefined4 param_1,int param_2)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (expression_statement "puVar4 = PTR_memcpy_001dc0e4;" (assignment_expression "puVar4 = PTR_memcpy_001dc0e4" identifier = identifier) ;) (expression_statement "puVar3 = PTR_DAT_001db8f8;" (assignment_expression "puVar3 = PTR_DAT_001db8f8" identifier = identifier) ;) (if_statement "if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0)" ( (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a28)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a28" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" { (if_statement "if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" { (if_statement "if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 == 1)" ( (binary_expression "param_2 == 1" identifier == number_literal) )) (compound_statement "{\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }" { (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a3c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a3c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a3c" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" { (expression_statement "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);" (call_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24)" (parenthesized_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)" ( (pointer_expression "*(code *)PTR_bfd_hash_table_free_001dc068" * (cast_expression "(code *)PTR_bfd_hash_table_free_001dc068" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a28) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a28) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a28)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a28)" ( (binary_expression "puVar3 + -0x3a28" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);" (assignment_expression "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier = (binary_expression "iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" ( (binary_expression "iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a24) = uVar7;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a24) = uVar7" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38)" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a38)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a38)" ( (binary_expression "puVar3 + -0x3a38" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)puVar4)(uVar7,iVar16);" (call_expression "(*(code *)puVar4)(uVar7,iVar16)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar7,iVar16)" ( identifier , identifier ))) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) ))))) ;) (if_statement "if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" if (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" { (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (do_statement "do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));" do (compound_statement "{\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          }" { (expression_statement "iVar16 = *(int *)(iVar16 + uVar18 * 4);" (assignment_expression "iVar16 = *(int *)(iVar16 + uVar18 * 4)" identifier = (pointer_expression "*(int *)(iVar16 + uVar18 * 4)" * (cast_expression "(int *)(iVar16 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + uVar18 * 4)" ( (binary_expression "iVar16 + uVar18 * 4" identifier + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) ;) (while_statement "while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" while (parenthesized_expression "(iVar16 != 0)" ( (binary_expression "iVar16 != 0" identifier != number_literal) )) (compound_statement "{\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" { (expression_statement "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));" (assignment_expression "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" identifier = (cast_expression "(int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))))) ;) (expression_statement "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar15 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" for ( (assignment_expression "piVar12 = (int *)piVar8[4]" identifier = (cast_expression "(int *)piVar8[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[4]" identifier [ number_literal ]))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" { (expression_statement "uVar11 = puVar17[1];" (assignment_expression "uVar11 = puVar17[1]" identifier = (subscript_expression "puVar17[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = puVar17[2];" (assignment_expression "uVar7 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar12 = *puVar17;" (assignment_expression "*piVar12 = *puVar17" (pointer_expression "*piVar12" * identifier) = (pointer_expression "*puVar17" * identifier)) ;) (expression_statement "piVar12[1] = uVar11;" (assignment_expression "piVar12[1] = uVar11" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar12[2] = uVar7;" (assignment_expression "piVar12[2] = uVar7" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) (expression_statement "iVar16 = *piVar8;" (assignment_expression "iVar16 = *piVar8" identifier = (pointer_expression "*piVar8" * identifier)) ;) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar18 < *(uint *)(puVar3 + -0x3a18))" ( (binary_expression "uVar18 < *(uint *)(puVar3 + -0x3a18)" identifier < (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) )) ;) })) (expression_statement "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));" (call_expression "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" (parenthesized_expression "(*(code *)PTR_objalloc_free_block_001dbf20)" ( (pointer_expression "*(code *)PTR_objalloc_free_block_001dbf20" * (cast_expression "(code *)PTR_objalloc_free_block_001dbf20" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a1c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a1c)" ( (binary_expression "puVar3 + -0x3a1c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) ))) ;) }) (else_clause "else if (param_2 != 2) {\n        return 0;\n      }" else (if_statement "if (param_2 != 2) {\n        return 0;\n      }" if (parenthesized_expression "(param_2 != 2)" ( (binary_expression "param_2 != 2" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })))) (expression_statement "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));" (call_expression "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c))" (parenthesized_expression "(*(code *)PTR_free_001dc0ec)" ( (pointer_expression "*(code *)PTR_free_001dc0ec" * (cast_expression "(code *)PTR_free_001dc0ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(puVar3 + -0x3a3c))" ( (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined4 *)(puVar3 + -0x3a3c) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a3c) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a3c)" ( (binary_expression "puVar3 + -0x3a3c" identifier + number_literal) )))) = number_literal) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a48" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a18)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c)" identifier = (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar14 = 0;\n    }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" else (compound_statement "{\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" { (expression_statement "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);" (assignment_expression "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24)" identifier = (pointer_expression "*(int **)(PTR_DAT_001db8f8 + -0x3a24)" * (cast_expression "(int **)(PTR_DAT_001db8f8 + -0x3a24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a24)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar14 = iVar13 * 4;" (assignment_expression "iVar14 = iVar13 * 4" identifier = (binary_expression "iVar13 * 4" identifier * number_literal)) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "piVar8 = piVar12 + iVar13;" (assignment_expression "piVar8 = piVar12 + iVar13" identifier = (binary_expression "piVar12 + iVar13" identifier + identifier)) ;) (expression_statement "iVar13 = iVar16;" (assignment_expression "iVar13 = iVar16" identifier = identifier) ;) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" identifier = identifier) ;) (do_statement "do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);" do (compound_statement "{\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      }" { (expression_statement "piVar9 = (int *)*piVar12;" (assignment_expression "piVar9 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" { (do_statement "do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);" do (compound_statement "{\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          }" { (expression_statement "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);" (assignment_expression "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier = (binary_expression "iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" identifier + (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a10)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a10)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a10" identifier + number_literal) )))))) ;) (expression_statement "piVar6 = (int *)piVar9[4];" (assignment_expression "piVar6 = (int *)piVar9[4]" identifier = (cast_expression "(int *)piVar9[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (if_statement "if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" if (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" { (do_statement "do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);" do (compound_statement "{\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              }" { (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" identifier = (binary_expression "iVar13 + 0xc" identifier + number_literal)) ;) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" identifier = (cast_expression "(int *)*piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar6" * identifier))) ;) }) while (parenthesized_expression "(piVar6 != (int *)0x0)" ( (binary_expression "piVar6 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) })) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) })) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" identifier = (binary_expression "piVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar12)" ( (binary_expression "piVar8 != piVar12" identifier != identifier) )) ;) (if_statement "if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" { (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = iVar13;" (assignment_expression "iVar16 = iVar13" identifier = identifier) ;) })) (if_statement "if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" { (expression_statement "*(int *)(puVar3 + -0x3a48) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x3a48) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar15 = iVar10;" (assignment_expression "iVar15 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "puVar5 = PTR_xmalloc_001dc03c;" (assignment_expression "puVar5 = PTR_xmalloc_001dc03c" identifier = identifier) ;) (expression_statement "puVar4 = PTR_DAT_001db8f8;" (assignment_expression "puVar4 = PTR_DAT_001db8f8" identifier = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a44" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);" (assignment_expression "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16)" identifier = (call_expression "(*(code *)puVar5)(iVar15 + iVar14 + iVar16)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar15 + iVar14 + iVar16)" ( (binary_expression "iVar15 + iVar14 + iVar16" (binary_expression "iVar15 + iVar14" identifier + identifier) + identifier) )))) ;) (expression_statement "puVar5 = PTR_bfd_hash_allocate_001dbfdc;" (assignment_expression "puVar5 = PTR_bfd_hash_allocate_001dbfdc" identifier = identifier) ;) (expression_statement "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x3a3c)" * (cast_expression "(undefined4 *)(puVar4 + -0x3a3c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);" (assignment_expression "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1)" identifier = (call_expression "(*(code *)puVar5)(puVar3 + -0x3a24,1)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3 + -0x3a24,1)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) , number_literal )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar16 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar16 == 0)" ( (binary_expression "iVar16 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);" (assignment_expression "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" identifier = (binary_expression "*(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar4 + -0x3a44)" * (cast_expression "(int *)(puVar4 + -0x3a44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a44)" ( (binary_expression "puVar4 + -0x3a44" identifier + number_literal) )))))) ;) (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" ( (pointer_expression "*(int *)(puVar4 + -0x3a3c)" * (cast_expression "(int *)(puVar4 + -0x3a3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0x3a3c)" ( (binary_expression "puVar4 + -0x3a3c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) )))) ))) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(puVar3 + -0x3a18)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a18)" * (cast_expression "(int *)(puVar3 + -0x3a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(undefined4 *)(puVar3 + -0x3a14);" (assignment_expression "uVar11 = *(undefined4 *)(puVar3 + -0x3a14)" identifier = (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a14)" ( (binary_expression "puVar3 + -0x3a14" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" identifier = (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" identifier = (cast_expression "(undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar16 + *(int *)(puVar3 + -0x3a48))" ( (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a48)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a48)" * (cast_expression "(int *)(puVar3 + -0x3a48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a48)" ( (binary_expression "puVar3 + -0x3a48" identifier + number_literal) ))))) )))) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34)" * (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a38)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" * (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" ( (binary_expression "PTR_DAT_001db8f8 + -0x3a50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" { (for_statement "for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" for ( (assignment_expression "piVar12 = *(int **)(iVar15 + iVar13)" identifier = (pointer_expression "*(int **)(iVar15 + iVar13)" * (cast_expression "(int **)(iVar15 + iVar13)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + iVar13)" ( (binary_expression "iVar15 + iVar13" identifier + identifier) ))))) ; (binary_expression "piVar12 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar12 = (int *)*piVar12" identifier = (cast_expression "(int *)*piVar12" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar12" * identifier))) ) (compound_statement "{\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" { (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" ( (pointer_expression "*(code *)PTR_memcpy_001dc0e4" * (cast_expression "(code *)PTR_memcpy_001dc0e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" ( identifier , identifier , (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" * (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))) ))) ;) (expression_statement "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10)" identifier = (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a10)" identifier + (pointer_expression "*(int *)(puVar3 + -0x3a10)" * (cast_expression "(int *)(puVar3 + -0x3a10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a10)" ( (binary_expression "puVar3 + -0x3a10" identifier + number_literal) )))))) ;) (for_statement "for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" for ( (assignment_expression "piVar8 = (int *)piVar12[4]" identifier = (cast_expression "(int *)piVar12[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar12[4]" identifier [ number_literal ]))) ; (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar8 = (int *)*piVar8" identifier = (cast_expression "(int *)*piVar8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar8" * identifier))) ) (compound_statement "{\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" { (expression_statement "uVar11 = piVar8[1];" (assignment_expression "uVar11 = piVar8[1]" identifier = (subscript_expression "piVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = piVar8[2];" (assignment_expression "uVar7 = piVar8[2]" identifier = (subscript_expression "piVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar17 = *piVar8;" (assignment_expression "*puVar17 = *piVar8" (pointer_expression "*puVar17" * identifier) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "puVar17[1] = uVar11;" (assignment_expression "puVar17[1] = uVar11" (subscript_expression "puVar17[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17[2] = uVar7;" (assignment_expression "puVar17[2] = uVar7" (subscript_expression "puVar17[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" identifier = (binary_expression "puVar17 + 3" identifier + number_literal)) ;) })) })) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" identifier = (pointer_expression "*(int *)(puVar3 + -0x3a24)" * (cast_expression "(int *)(puVar3 + -0x3a24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a24)" ( (binary_expression "puVar3 + -0x3a24" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;" if (parenthesized_expression "(*(uint *)(puVar3 + -0x3a18) <= uVar18)" ( (binary_expression "*(uint *)(puVar3 + -0x3a18) <= uVar18" (pointer_expression "*(uint *)(puVar3 + -0x3a18)" * (cast_expression "(uint *)(puVar3 + -0x3a18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x3a18)" ( (binary_expression "puVar3 + -0x3a18" identifier + number_literal) )))) <= identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar13 = uVar18 * 4;" (assignment_expression "iVar13 = uVar18 * 4" identifier = (binary_expression "uVar18 * 4" identifier * number_literal)) ;) })) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = (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 + (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) )))) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , 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 + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) = LIT) ;) (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 = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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 IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 + (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , 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 + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) })) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 handle_asneeded_cref(undefined4 param_1,int param_2)\n\n{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "handle_asneeded_cref(undefined4 param_1,int param_2)" (identifier "handle_asneeded_cref") (parameter_list "(undefined4 param_1,int param_2)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  int *piVar6;\n  undefined4 uVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  undefined4 uVar11;\n  int *piVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  int iVar16;\n  undefined4 *puVar17;\n  uint uVar18;\n  \n  puVar4 = PTR_memcpy_001dc0e4;\n  puVar3 = PTR_DAT_001db8f8;\n  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }\n  return 1;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "undefined4 *puVar17;" (type_identifier "undefined4") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (expression_statement "puVar4 = PTR_memcpy_001dc0e4;" (assignment_expression "puVar4 = PTR_memcpy_001dc0e4" (identifier "puVar4") (= "=") (identifier "PTR_memcpy_001dc0e4")) (; ";")) (expression_statement "puVar3 = PTR_DAT_001db8f8;" (assignment_expression "puVar3 = PTR_DAT_001db8f8" (identifier "puVar3") (= "=") (identifier "PTR_DAT_001db8f8")) (; ";")) (if_statement "if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0)" (( "(") (binary_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a28)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a28)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a28" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }\n    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);\n    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);\n    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);\n    if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }\n    puVar5 = PTR_xmalloc_001dc03c;\n    puVar4 = PTR_DAT_001db8f8;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;\n    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);\n    puVar5 = PTR_bfd_hash_allocate_001dbfdc;\n    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;\n    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);\n    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;\n    if (iVar16 == 0) {\n      return 0;\n    }\n    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);\n    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));\n    iVar15 = *(int *)(puVar3 + -0x3a24);\n    iVar13 = *(int *)(puVar3 + -0x3a18);\n    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);\n    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);\n    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));\n    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;\n    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;\n    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;\n    if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }\n  }" ({ "{") (if_statement "if (param_2 != 0) {\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }\n      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));\n      *(undefined4 *)(puVar3 + -0x3a3c) = 0;\n      return 1;\n    }" ({ "{") (if_statement "if (param_2 == 1) {\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }\n      else if (param_2 != 2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_2 == 1)" (( "(") (binary_expression "param_2 == 1" (identifier "param_2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);\n        if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }\n        uVar18 = 0;\n        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);\n        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);\n        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);\n        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;\n        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);\n        (*(code *)puVar4)(uVar7,iVar16);\n        iVar16 = *(int *)(puVar3 + -0x3a18);\n        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);\n        if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }\n        (*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));\n      }" ({ "{") (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a3c)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a3c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a3c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a3c")) () ")"))))) (; ";")) (if_statement "if (iVar16 == 0) {\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);\n          *(undefined4 *)(puVar3 + -0x3a28) = 0;\n          return 1;\n        }" ({ "{") (expression_statement "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);" (call_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24)" (parenthesized_expression "(*(code *)PTR_bfd_hash_table_free_001dc068)" (( "(") (pointer_expression "*(code *)PTR_bfd_hash_table_free_001dc068" (* "*") (cast_expression "(code *)PTR_bfd_hash_table_free_001dc068" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_bfd_hash_table_free_001dc068"))) () ")")) (argument_list "(PTR_DAT_001db8f8 + -0x3a24)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a24" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a24")) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -0x3a28) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a28) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a28)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a28)" (( "(") (binary_expression "puVar3 + -0x3a28" (identifier "puVar3") (+ "+") (number_literal "-0x3a28")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);" (assignment_expression "iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" (identifier "iVar15") (= "=") (binary_expression "iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44)" (identifier "iVar16") (+ "+") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a44" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a44")) () ")")))))) (; ";")) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a30" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a30")) () ")"))))) (; ";")) (expression_statement "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" (identifier "puVar17") (= "=") (cast_expression "(undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48))" (( "(") (binary_expression "iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48)" (identifier "iVar15") (+ "+") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a48" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a48")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a18" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a34" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a34")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -0x3a24) = uVar7;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a24) = uVar7" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38)" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a14)" (( "(") (binary_expression "puVar3 + -0x3a14" (identifier "puVar3") (+ "+") (number_literal "-0x3a14")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a38)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a38)" (( "(") (binary_expression "puVar3 + -0x3a38" (identifier "puVar3") (+ "+") (number_literal "-0x3a38")) () ")"))))) (; ";")) (expression_statement "(*(code *)puVar4)(uVar7,iVar16);" (call_expression "(*(code *)puVar4)(uVar7,iVar16)" (parenthesized_expression "(*(code *)puVar4)" (( "(") (pointer_expression "*(code *)puVar4" (* "*") (cast_expression "(code *)puVar4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar4"))) () ")")) (argument_list "(uVar7,iVar16)" (( "(") (identifier "uVar7") (, ",") (identifier "iVar16") () ")"))) (; ";")) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a18)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a18)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a18)" (( "(") (binary_expression "puVar3 + -0x3a18" (identifier "puVar3") (+ "+") (number_literal "-0x3a18")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a2c")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a50" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a50")) () ")"))))) (; ";")) (if_statement "if (iVar16 != 0) {\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" (if "if") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar16 = *(int *)(puVar3 + -0x3a24);\n          do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));\n        }" ({ "{") (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")"))))) (; ";")) (do_statement "do {\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));" (do "do") (compound_statement "{\n            iVar16 = *(int *)(iVar16 + uVar18 * 4);\n            while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }\n            uVar18 = uVar18 + 1;\n            iVar16 = *(int *)(puVar3 + -0x3a24);\n          }" ({ "{") (expression_statement "iVar16 = *(int *)(iVar16 + uVar18 * 4);" (assignment_expression "iVar16 = *(int *)(iVar16 + uVar18 * 4)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(iVar16 + uVar18 * 4)" (* "*") (cast_expression "(int *)(iVar16 + uVar18 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + uVar18 * 4)" (( "(") (binary_expression "iVar16 + uVar18 * 4" (identifier "iVar16") (+ "+") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (while_statement "while (iVar16 != 0) {\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" (while "while") (parenthesized_expression "(iVar16 != 0)" (( "(") (binary_expression "iVar16 != 0" (identifier "iVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));\n              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);\n              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }\n              iVar16 = *piVar8;\n            }" ({ "{") (expression_statement "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));" (assignment_expression "piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (identifier "piVar8") (= "=") (cast_expression "(int *)(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_memcpy_001dc0e4)\n                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_001dc0e4" (* "*") (cast_expression "(code *)PTR_memcpy_001dc0e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_001dc0e4"))) () ")")) (argument_list "(iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10))" (( "(") (identifier "iVar16") (, ",") (identifier "iVar15") (, ",") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a10)" (( "(") (binary_expression "puVar3 + -0x3a10" (identifier "puVar3") (+ "+") (number_literal "-0x3a10")) () ")")))) () ")"))))) (; ";")) (expression_statement "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10)" (identifier "iVar15") (= "=") (binary_expression "iVar15 + *(int *)(puVar3 + -0x3a10)" (identifier "iVar15") (+ "+") (pointer_expression "*(int *)(puVar3 + -0x3a10)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a10)" (( "(") (binary_expression "puVar3 + -0x3a10" (identifier "puVar3") (+ "+") (number_literal "-0x3a10")) () ")")))))) (; ";")) (for_statement "for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" (for "for") (( "(") (assignment_expression "piVar12 = (int *)piVar8[4]" (identifier "piVar12") (= "=") (cast_expression "(int *)piVar8[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[4]" (identifier "piVar8") ([ "[") (number_literal "4") (] "]")))) (; ";") (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "piVar12 = (int *)*piVar12" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) () ")") (compound_statement "{\n                uVar11 = puVar17[1];\n                uVar7 = puVar17[2];\n                *piVar12 = *puVar17;\n                piVar12[1] = uVar11;\n                piVar12[2] = uVar7;\n                puVar17 = puVar17 + 3;\n              }" ({ "{") (expression_statement "uVar11 = puVar17[1];" (assignment_expression "uVar11 = puVar17[1]" (identifier "uVar11") (= "=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = puVar17[2];" (assignment_expression "uVar7 = puVar17[2]" (identifier "uVar7") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*piVar12 = *puVar17;" (assignment_expression "*piVar12 = *puVar17" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))) (; ";")) (expression_statement "piVar12[1] = uVar11;" (assignment_expression "piVar12[1] = uVar11" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "piVar12[2] = uVar7;" (assignment_expression "piVar12[2] = uVar7" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "iVar16 = *piVar8;" (assignment_expression "iVar16 = *piVar8" (identifier "iVar16") (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (} "}"))) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar16 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar16 = *(int *)(puVar3 + -0x3a24)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar18 < *(uint *)(puVar3 + -0x3a18))" (( "(") (binary_expression "uVar18 < *(uint *)(puVar3 + -0x3a18)" (identifier "uVar18") (< "<") (pointer_expression "*(uint *)(puVar3 + -0x3a18)" (* "*") (cast_expression "(uint *)(puVar3 + -0x3a18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a18)" (( "(") (binary_expression "puVar3 + -0x3a18" (identifier "puVar3") (+ "+") (number_literal "-0x3a18")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));" (call_expression "(*(code *)PTR_objalloc_free_block_001dbf20)\n                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" (parenthesized_expression "(*(code *)PTR_objalloc_free_block_001dbf20)" (( "(") (pointer_expression "*(code *)PTR_objalloc_free_block_001dbf20" (* "*") (cast_expression "(code *)PTR_objalloc_free_block_001dbf20" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_objalloc_free_block_001dbf20"))) () ")")) (argument_list "(*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40))" (( "(") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a1c)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a1c)" (( "(") (binary_expression "puVar3 + -0x3a1c" (identifier "puVar3") (+ "+") (number_literal "-0x3a1c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a40" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a40")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else if (param_2 != 2) {\n        return 0;\n      }" (else "else") (if_statement "if (param_2 != 2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(param_2 != 2)" (( "(") (binary_expression "param_2 != 2" (identifier "param_2") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))))) (expression_statement "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));" (call_expression "(*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c))" (parenthesized_expression "(*(code *)PTR_free_001dc0ec)" (( "(") (pointer_expression "*(code *)PTR_free_001dc0ec" (* "*") (cast_expression "(code *)PTR_free_001dc0ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_001dc0ec"))) () ")")) (argument_list "(*(undefined4 *)(puVar3 + -0x3a3c))" (( "(") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a3c)" (( "(") (binary_expression "puVar3 + -0x3a3c" (identifier "puVar3") (+ "+") (number_literal "-0x3a3c")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + -0x3a3c) = 0;" (assignment_expression "*(undefined4 *)(puVar3 + -0x3a3c) = 0" (pointer_expression "*(undefined4 *)(puVar3 + -0x3a3c)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a3c)" (( "(") (binary_expression "puVar3 + -0x3a3c" (identifier "puVar3") (+ "+") (number_literal "-0x3a3c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);" (assignment_expression "iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a48)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a48)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a48" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a48")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a18)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a18)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a18" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a18")) () ")"))))) (; ";")) (expression_statement "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);" (assignment_expression "iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c)" (identifier "iVar16") (= "=") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a4c")) () ")"))))) (; ";")) (if_statement "if (iVar13 == 0) {\n      iVar14 = 0;\n    }\n    else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar14 = 0;\n    }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" (else "else") (compound_statement "{\n      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);\n      iVar14 = iVar13 * 4;\n      bVar2 = false;\n      bVar1 = false;\n      piVar8 = piVar12 + iVar13;\n      iVar13 = iVar16;\n      iVar10 = iVar15;\n      do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);\n      if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }\n      if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }\n    }" ({ "{") (expression_statement "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);" (assignment_expression "piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(PTR_DAT_001db8f8 + -0x3a24)" (* "*") (cast_expression "(int **)(PTR_DAT_001db8f8 + -0x3a24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a24)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a24" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a24")) () ")"))))) (; ";")) (expression_statement "iVar14 = iVar13 * 4;" (assignment_expression "iVar14 = iVar13 * 4" (identifier "iVar14") (= "=") (binary_expression "iVar13 * 4" (identifier "iVar13") (* "*") (number_literal "4"))) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "piVar8 = piVar12 + iVar13;" (assignment_expression "piVar8 = piVar12 + iVar13" (identifier "piVar8") (= "=") (binary_expression "piVar12 + iVar13" (identifier "piVar12") (+ "+") (identifier "iVar13"))) (; ";")) (expression_statement "iVar13 = iVar16;" (assignment_expression "iVar13 = iVar16" (identifier "iVar13") (= "=") (identifier "iVar16")) (; ";")) (expression_statement "iVar10 = iVar15;" (assignment_expression "iVar10 = iVar15" (identifier "iVar10") (= "=") (identifier "iVar15")) (; ";")) (do_statement "do {\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      } while (piVar8 != piVar12);" (do "do") (compound_statement "{\n        piVar9 = (int *)*piVar12;\n        if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }\n        piVar12 = piVar12 + 1;\n      }" ({ "{") (expression_statement "piVar9 = (int *)*piVar12;" (assignment_expression "piVar9 = (int *)*piVar12" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);\n          bVar2 = true;\n        }" ({ "{") (do_statement "do {\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          } while (piVar9 != (int *)0x0);" (do "do") (compound_statement "{\n            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);\n            piVar6 = (int *)piVar9[4];\n            if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }\n            piVar9 = (int *)*piVar9;\n          }" ({ "{") (expression_statement "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);" (assignment_expression "iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" (identifier "iVar10") (= "=") (binary_expression "iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10)" (identifier "iVar10") (+ "+") (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a10)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a10)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a10" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a10")) () ")")))))) (; ";")) (expression_statement "piVar6 = (int *)piVar9[4];" (assignment_expression "piVar6 = (int *)piVar9[4]" (identifier "piVar6") (= "=") (cast_expression "(int *)piVar9[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[4]" (identifier "piVar9") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (piVar6 != (int *)0x0) {\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" (if "if") (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);\n              bVar1 = true;\n            }" ({ "{") (do_statement "do {\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              } while (piVar6 != (int *)0x0);" (do "do") (compound_statement "{\n                iVar13 = iVar13 + 0xc;\n                piVar6 = (int *)*piVar6;\n              }" ({ "{") (expression_statement "iVar13 = iVar13 + 0xc;" (assignment_expression "iVar13 = iVar13 + 0xc" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 0xc" (identifier "iVar13") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "piVar6 = (int *)*piVar6;" (assignment_expression "piVar6 = (int *)*piVar6" (identifier "piVar6") (= "=") (cast_expression "(int *)*piVar6" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar6 != (int *)0x0)" (( "(") (binary_expression "piVar6 != (int *)0x0" (identifier "piVar6") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (} "}"))) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}"))) (expression_statement "piVar12 = piVar12 + 1;" (assignment_expression "piVar12 = piVar12 + 1" (identifier "piVar12") (= "=") (binary_expression "piVar12 + 1" (identifier "piVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar8 != piVar12)" (( "(") (binary_expression "piVar8 != piVar12" (identifier "piVar8") (!= "!=") (identifier "piVar12")) () ")")) (; ";")) (if_statement "if (bVar1) {\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;\n        iVar16 = iVar13;\n      }" ({ "{") (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a4c)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a4c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a4c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a4c")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "iVar16 = iVar13;" (assignment_expression "iVar16 = iVar13" (identifier "iVar16") (= "=") (identifier "iVar13")) (; ";")) (} "}"))) (if_statement "if (bVar2) {\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n        *(int *)(puVar3 + -0x3a48) = iVar10;\n        iVar15 = iVar10;\n      }" ({ "{") (expression_statement "*(int *)(puVar3 + -0x3a48) = iVar10;" (assignment_expression "*(int *)(puVar3 + -0x3a48) = iVar10" (pointer_expression "*(int *)(puVar3 + -0x3a48)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a48)" (( "(") (binary_expression "puVar3 + -0x3a48" (identifier "puVar3") (+ "+") (number_literal "-0x3a48")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "iVar15 = iVar10;" (assignment_expression "iVar15 = iVar10" (identifier "iVar15") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar5 = PTR_xmalloc_001dc03c;" (assignment_expression "puVar5 = PTR_xmalloc_001dc03c" (identifier "puVar5") (= "=") (identifier "PTR_xmalloc_001dc03c")) (; ";")) (expression_statement "puVar4 = PTR_DAT_001db8f8;" (assignment_expression "puVar4 = PTR_DAT_001db8f8" (identifier "puVar4") (= "=") (identifier "PTR_DAT_001db8f8")) (; ";")) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a44)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a44)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a44" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a44")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);" (assignment_expression "uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16)" (identifier "uVar7") (= "=") (call_expression "(*(code *)puVar5)(iVar15 + iVar14 + iVar16)" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "(iVar15 + iVar14 + iVar16)" (( "(") (binary_expression "iVar15 + iVar14 + iVar16" (binary_expression "iVar15 + iVar14" (identifier "iVar15") (+ "+") (identifier "iVar14")) (+ "+") (identifier "iVar16")) () ")")))) (; ";")) (expression_statement "puVar5 = PTR_bfd_hash_allocate_001dbfdc;" (assignment_expression "puVar5 = PTR_bfd_hash_allocate_001dbfdc" (identifier "puVar5") (= "=") (identifier "PTR_bfd_hash_allocate_001dbfdc")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7;" (assignment_expression "*(undefined4 *)(puVar4 + -0x3a3c) = uVar7" (pointer_expression "*(undefined4 *)(puVar4 + -0x3a3c)" (* "*") (cast_expression "(undefined4 *)(puVar4 + -0x3a3c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x3a3c)" (( "(") (binary_expression "puVar4 + -0x3a3c" (identifier "puVar4") (+ "+") (number_literal "-0x3a3c")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);" (assignment_expression "iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1)" (identifier "iVar16") (= "=") (call_expression "(*(code *)puVar5)(puVar3 + -0x3a24,1)" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "(puVar3 + -0x3a24,1)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a40)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a40)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a40" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a40")) () ")")))) (= "=") (identifier "iVar16")) (; ";")) (if_statement "if (iVar16 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar16 == 0)" (( "(") (binary_expression "iVar16 == 0" (identifier "iVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);" (assignment_expression "iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" (identifier "iVar16") (= "=") (binary_expression "*(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44)" (pointer_expression "*(int *)(puVar4 + -0x3a3c)" (* "*") (cast_expression "(int *)(puVar4 + -0x3a3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x3a3c)" (( "(") (binary_expression "puVar4 + -0x3a3c" (identifier "puVar4") (+ "+") (number_literal "-0x3a3c")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar4 + -0x3a44)" (* "*") (cast_expression "(int *)(puVar4 + -0x3a44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x3a44)" (( "(") (binary_expression "puVar4 + -0x3a44" (identifier "puVar4") (+ "+") (number_literal "-0x3a44")) () ")")))))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_001dc0e4" (* "*") (cast_expression "(code *)PTR_memcpy_001dc0e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_001dc0e4"))) () ")")) (argument_list "(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24))" (( "(") (pointer_expression "*(int *)(puVar4 + -0x3a3c)" (* "*") (cast_expression "(int *)(puVar4 + -0x3a3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + -0x3a3c)" (( "(") (binary_expression "puVar4 + -0x3a3c" (identifier "puVar4") (+ "+") (number_literal "-0x3a3c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")"))))) (; ";")) (expression_statement "iVar13 = *(int *)(puVar3 + -0x3a18);" (assignment_expression "iVar13 = *(int *)(puVar3 + -0x3a18)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a18)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a18)" (( "(") (binary_expression "puVar3 + -0x3a18" (identifier "puVar3") (+ "+") (number_literal "-0x3a18")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(undefined4 *)(puVar3 + -0x3a14);" (assignment_expression "uVar11 = *(undefined4 *)(puVar3 + -0x3a14)" (identifier "uVar11") (= "=") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a14)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a14)" (( "(") (binary_expression "puVar3 + -0x3a14" (identifier "puVar3") (+ "+") (number_literal "-0x3a14")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);" (assignment_expression "uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a2c)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a2c" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a2c")) () ")"))))) (; ";")) (expression_statement "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));" (assignment_expression "puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" (identifier "puVar17") (= "=") (cast_expression "(undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar16 + *(int *)(puVar3 + -0x3a48))" (( "(") (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a48)" (identifier "iVar16") (+ "+") (pointer_expression "*(int *)(puVar3 + -0x3a48)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a48)" (( "(") (binary_expression "puVar3 + -0x3a48" (identifier "puVar3") (+ "+") (number_literal "-0x3a48")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a30)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a30)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a30" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a30")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;" (assignment_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13" (pointer_expression "*(int *)(PTR_DAT_001db8f8 + -0x3a34)" (* "*") (cast_expression "(int *)(PTR_DAT_001db8f8 + -0x3a34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a34)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a34" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a34")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a38)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a38" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a38")) () ")")))) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;" (assignment_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7" (pointer_expression "*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (* "*") (cast_expression "(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_001db8f8 + -0x3a50)" (( "(") (binary_expression "PTR_DAT_001db8f8 + -0x3a50" (identifier "PTR_DAT_001db8f8") (+ "+") (number_literal "-0x3a50")) () ")")))) (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (iVar13 != 0) {\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar13 = 0;\n      uVar18 = 0;\n      while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }\n    }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }\n        uVar18 = uVar18 + 1;\n        iVar15 = *(int *)(puVar3 + -0x3a24);\n        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;\n        iVar13 = uVar18 * 4;\n      }" ({ "{") (for_statement "for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)\n        {\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" (for "for") (( "(") (assignment_expression "piVar12 = *(int **)(iVar15 + iVar13)" (identifier "piVar12") (= "=") (pointer_expression "*(int **)(iVar15 + iVar13)" (* "*") (cast_expression "(int **)(iVar15 + iVar13)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + iVar13)" (( "(") (binary_expression "iVar15 + iVar13" (identifier "iVar15") (+ "+") (identifier "iVar13")) () ")"))))) (; ";") (binary_expression "piVar12 != (int *)0x0" (identifier "piVar12") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "piVar12 = (int *)*piVar12" (identifier "piVar12") (= "=") (cast_expression "(int *)*piVar12" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar12" (* "*") (identifier "piVar12")))) () ")") (compound_statement "{\n          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));\n          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);\n          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }\n        }" ({ "{") (expression_statement "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));" (call_expression "(*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" (parenthesized_expression "(*(code *)PTR_memcpy_001dc0e4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_001dc0e4" (* "*") (cast_expression "(code *)PTR_memcpy_001dc0e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_001dc0e4"))) () ")")) (argument_list "(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10))" (( "(") (identifier "iVar16") (, ",") (identifier "piVar12") (, ",") (pointer_expression "*(undefined4 *)(puVar3 + -0x3a10)" (* "*") (cast_expression "(undefined4 *)(puVar3 + -0x3a10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a10)" (( "(") (binary_expression "puVar3 + -0x3a10" (identifier "puVar3") (+ "+") (number_literal "-0x3a10")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);" (assignment_expression "iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10)" (identifier "iVar16") (= "=") (binary_expression "iVar16 + *(int *)(puVar3 + -0x3a10)" (identifier "iVar16") (+ "+") (pointer_expression "*(int *)(puVar3 + -0x3a10)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a10)" (( "(") (binary_expression "puVar3 + -0x3a10" (identifier "puVar3") (+ "+") (number_literal "-0x3a10")) () ")")))))) (; ";")) (for_statement "for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" (for "for") (( "(") (assignment_expression "piVar8 = (int *)piVar12[4]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar12[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")))) (; ";") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "piVar8 = (int *)*piVar8" (identifier "piVar8") (= "=") (cast_expression "(int *)*piVar8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) () ")") (compound_statement "{\n            uVar11 = piVar8[1];\n            uVar7 = piVar8[2];\n            *puVar17 = *piVar8;\n            puVar17[1] = uVar11;\n            puVar17[2] = uVar7;\n            puVar17 = puVar17 + 3;\n          }" ({ "{") (expression_statement "uVar11 = piVar8[1];" (assignment_expression "uVar11 = piVar8[1]" (identifier "uVar11") (= "=") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = piVar8[2];" (assignment_expression "uVar7 = piVar8[2]" (identifier "uVar7") (= "=") (subscript_expression "piVar8[2]" (identifier "piVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*puVar17 = *piVar8;" (assignment_expression "*puVar17 = *piVar8" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "puVar17[1] = uVar11;" (assignment_expression "puVar17[1] = uVar11" (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "puVar17[2] = uVar7;" (assignment_expression "puVar17[2] = uVar7" (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar17 = puVar17 + 3;" (assignment_expression "puVar17 = puVar17 + 3" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 3" (identifier "puVar17") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" (identifier "uVar18") (= "=") (binary_expression "uVar18 + 1" (identifier "uVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar3 + -0x3a24);" (assignment_expression "iVar15 = *(int *)(puVar3 + -0x3a24)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar3 + -0x3a24)" (* "*") (cast_expression "(int *)(puVar3 + -0x3a24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a24)" (( "(") (binary_expression "puVar3 + -0x3a24" (identifier "puVar3") (+ "+") (number_literal "-0x3a24")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;" (if "if") (parenthesized_expression "(*(uint *)(puVar3 + -0x3a18) <= uVar18)" (( "(") (binary_expression "*(uint *)(puVar3 + -0x3a18) <= uVar18" (pointer_expression "*(uint *)(puVar3 + -0x3a18)" (* "*") (cast_expression "(uint *)(puVar3 + -0x3a18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x3a18)" (( "(") (binary_expression "puVar3 + -0x3a18" (identifier "puVar3") (+ "+") (number_literal "-0x3a18")) () ")")))) (<= "<=") (identifier "uVar18")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar13 = uVar18 * 4;" (assignment_expression "iVar13 = uVar18 * 4" (identifier "iVar13") (= "=") (binary_expression "uVar18 * 4" (identifier "uVar18") (* "*") (number_literal "4"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

type_1 function_1(type_2 *abfd,type_3 var_2)

{
  bool bVar1;
  bool bVar2;
  type_4 *var_6;
  type_4 *var_18;
  type_4 *puVar5;
  int *var_15;
  type_5 uVar7;
  int *var_16;
  int *var_13;
  int var_14;
  type_5 uVar11;
  int *var_9;
  int var_12;
  int var_17;
  int var_7;
  int var_5;
  type_5 *var_10;
  type_6 var_8;
  
  var_18 = PTR_memcpy_001dc0e4;
  var_6 = var_1;
  if (*(int *)(var_1 + -0x3a28) != 0) {
    if (var_2 != var_3) {
      if (var_2 == var_4) {
        var_5 = *(int *)(var_1 + -0x3a3c);
        if (var_5 == 0) {
          (*(type_7 *)PTR_bfd_hash_table_free_001dc068)(var_1 + -0x3a24);
          *(type_5 *)(var_6 + -0x3a28) = 0;
          return 1;
        }
        var_8 = 0;
        var_7 = var_5 + *(int *)(var_1 + -0x3a44);
        uVar7 = *(type_5 *)(var_1 + -0x3a30);
        var_10 = (type_5 *)(var_7 + *(int *)(var_1 + -0x3a48));
        *(type_5 *)(var_1 + -0x3a18) = *(type_5 *)(var_1 + -0x3a34);
        *(type_5 *)(var_6 + -0x3a24) = uVar7;
        *(type_5 *)(var_6 + -0x3a14) = *(type_5 *)(var_6 + -0x3a38);
        (*(type_7 *)var_18)(uVar7,var_5);
        var_5 = *(int *)(var_6 + -0x3a18);
        *(type_5 *)(var_1 + -0x3a2c) = *(type_5 *)(var_1 + -0x3a50);
        if (var_5 != 0) {
          var_5 = *(int *)(var_6 + -0x3a24);
          do {
            var_5 = *(int *)(var_5 + var_8 * 4);
            while (var_5 != 0) {
              var_16 = (int *)(*(type_7 *)PTR_memcpy_001dc0e4)
                                        (var_5,var_7,*(type_5 *)(var_6 + -0x3a10));
              var_7 = var_7 + *(int *)(var_6 + -0x3a10);
              for (var_9 = (int *)var_16[4]; var_9 != (int *)0x0; var_9 = (int *)*var_9) {
                uVar11 = var_10[1];
                uVar7 = var_10[2];
                *var_9 = *var_10;
                var_9[1] = uVar11;
                var_9[2] = uVar7;
                var_10 = var_10 + 3;
              }
              var_5 = *var_16;
            }
            var_8 = var_8 + 1;
            var_5 = *(int *)(var_6 + -0x3a24);
          } while (var_8 < *(type_6 *)(var_6 + -0x3a18));
        }
        (*(type_7 *)PTR_objalloc_free_block_001dbf20)
                  (*(type_5 *)(var_6 + -0x3a1c),*(type_5 *)(var_1 + -0x3a40));
      }
      else if (var_2 != var_11) {
        return 0;
      }
      (*(type_7 *)PTR_free_001dc0ec)(*(type_5 *)(var_6 + -0x3a3c));
      *(type_5 *)(var_6 + -0x3a3c) = 0;
      return 1;
    }
    var_7 = *(int *)(var_1 + -0x3a48);
    var_12 = *(int *)(var_1 + -0x3a18);
    var_5 = *(int *)(var_1 + -0x3a4c);
    if (var_12 == 0) {
      var_17 = 0;
    }
    else {
      var_9 = *(int **)(var_1 + -0x3a24);
      var_17 = var_12 * 4;
      bVar2 = false;
      bVar1 = false;
      var_16 = var_9 + var_12;
      var_12 = var_5;
      var_14 = var_7;
      do {
        var_13 = (int *)*var_9;
        if (var_13 != (int *)0x0) {
          do {
            var_14 = var_14 + *(int *)(var_1 + -0x3a10);
            var_15 = (int *)var_13[4];
            if (var_15 != (int *)0x0) {
              do {
                var_12 = var_12 + 0xc;
                var_15 = (int *)*var_15;
              } while (var_15 != (int *)0x0);
              bVar1 = true;
            }
            var_13 = (int *)*var_13;
          } while (var_13 != (int *)0x0);
          bVar2 = true;
        }
        var_9 = var_9 + 1;
      } while (var_16 != var_9);
      if (bVar1) {
        *(int *)(var_1 + -0x3a4c) = var_12;
        var_5 = var_12;
      }
      if (bVar2) {
        *(int *)(var_6 + -0x3a48) = var_14;
        var_7 = var_14;
      }
    }
    puVar5 = PTR_xmalloc_001dc03c;
    var_18 = var_1;
    *(int *)(var_1 + -0x3a44) = var_17;
    uVar7 = (*(type_7 *)puVar5)(var_7 + var_17 + var_5);
    puVar5 = PTR_bfd_hash_allocate_001dbfdc;
    *(type_5 *)(var_18 + -0x3a3c) = uVar7;
    var_5 = (*(type_7 *)puVar5)(var_6 + -0x3a24,1);
    *(int *)(var_1 + -0x3a40) = var_5;
    if (var_5 == 0) {
      return 0;
    }
    var_5 = *(int *)(var_18 + -0x3a3c) + *(int *)(var_18 + -0x3a44);
    (*(type_7 *)PTR_memcpy_001dc0e4)(*(int *)(var_18 + -0x3a3c),*(type_5 *)(var_6 + -0x3a24));
    var_7 = *(int *)(var_6 + -0x3a24);
    var_12 = *(int *)(var_6 + -0x3a18);
    uVar11 = *(type_5 *)(var_6 + -0x3a14);
    uVar7 = *(type_5 *)(var_1 + -0x3a2c);
    var_10 = (type_5 *)(var_5 + *(int *)(var_6 + -0x3a48));
    *(int *)(var_1 + -0x3a30) = var_7;
    *(int *)(var_1 + -0x3a34) = var_12;
    *(type_5 *)(var_1 + -0x3a38) = uVar11;
    *(type_5 *)(var_1 + -0x3a50) = uVar7;
    if (var_12 != 0) {
      var_12 = 0;
      var_8 = 0;
      while( true ) {
        for (var_9 = *(int **)(var_7 + var_12); var_9 != (int *)0x0; var_9 = (int *)*var_9)
        {
          (*(type_7 *)PTR_memcpy_001dc0e4)(var_5,var_9,*(type_5 *)(var_6 + -0x3a10));
          var_5 = var_5 + *(int *)(var_6 + -0x3a10);
          for (var_16 = (int *)var_9[4]; var_16 != (int *)0x0; var_16 = (int *)*var_16) {
            uVar11 = var_16[1];
            uVar7 = var_16[2];
            *var_10 = *var_16;
            var_10[1] = uVar11;
            var_10[2] = uVar7;
            var_10 = var_10 + 3;
          }
        }
        var_8 = var_8 + 1;
        var_7 = *(int *)(var_6 + -0x3a24);
        if (*(type_6 *)(var_6 + -0x3a18) <= var_8) break;
        var_12 = var_8 * 4;
      }
    }
  }
  return 1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (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 (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (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)))))))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) (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))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (true))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (true))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (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))) (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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (for_statement initializer: (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: (identifier)))))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (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: (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)))))))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (return_statement (number_literal)))))

undefined4 MASKED(undefined4 param_1,int param_2)

{
  bool bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined *puVar4;
  undefined *puVar5;
  int *piVar6;
  undefined4 uVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  undefined4 uVar11;
  int *piVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  undefined4 *puVar17;
  uint uVar18;
  
  puVar4 = PTR_memcpy_001dc0e4;
  puVar3 = PTR_DAT_001db8f8;
  if (*(int *)(PTR_DAT_001db8f8 + -0x3a28) != 0) {
    if (param_2 != 0) {
      if (param_2 == 1) {
        iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a3c);
        if (iVar16 == 0) {
          (*(code *)PTR_bfd_hash_table_free_001dc068)(PTR_DAT_001db8f8 + -0x3a24);
          *(undefined4 *)(puVar3 + -0x3a28) = 0;
          return 1;
        }
        uVar18 = 0;
        iVar15 = iVar16 + *(int *)(PTR_DAT_001db8f8 + -0x3a44);
        uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a30);
        puVar17 = (undefined4 *)(iVar15 + *(int *)(PTR_DAT_001db8f8 + -0x3a48));
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a18) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a34);
        *(undefined4 *)(puVar3 + -0x3a24) = uVar7;
        *(undefined4 *)(puVar3 + -0x3a14) = *(undefined4 *)(puVar3 + -0x3a38);
        (*(code *)puVar4)(uVar7,iVar16);
        iVar16 = *(int *)(puVar3 + -0x3a18);
        *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c) = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50);
        if (iVar16 != 0) {
          iVar16 = *(int *)(puVar3 + -0x3a24);
          do {
            iVar16 = *(int *)(iVar16 + uVar18 * 4);
            while (iVar16 != 0) {
              piVar8 = (int *)(*(code *)PTR_memcpy_001dc0e4)
                                        (iVar16,iVar15,*(undefined4 *)(puVar3 + -0x3a10));
              iVar15 = iVar15 + *(int *)(puVar3 + -0x3a10);
              for (piVar12 = (int *)piVar8[4]; piVar12 != (int *)0x0; piVar12 = (int *)*piVar12) {
                uVar11 = puVar17[1];
                uVar7 = puVar17[2];
                *piVar12 = *puVar17;
                piVar12[1] = uVar11;
                piVar12[2] = uVar7;
                puVar17 = puVar17 + 3;
              }
              iVar16 = *piVar8;
            }
            uVar18 = uVar18 + 1;
            iVar16 = *(int *)(puVar3 + -0x3a24);
          } while (uVar18 < *(uint *)(puVar3 + -0x3a18));
        }
        (*(code *)PTR_objalloc_free_block_001dbf20)
                  (*(undefined4 *)(puVar3 + -0x3a1c),*(undefined4 *)(PTR_DAT_001db8f8 + -0x3a40));
      }
      else if (param_2 != 2) {
        return 0;
      }
      (*(code *)PTR_free_001dc0ec)(*(undefined4 *)(puVar3 + -0x3a3c));
      *(undefined4 *)(puVar3 + -0x3a3c) = 0;
      return 1;
    }
    iVar15 = *(int *)(PTR_DAT_001db8f8 + -0x3a48);
    iVar13 = *(int *)(PTR_DAT_001db8f8 + -0x3a18);
    iVar16 = *(int *)(PTR_DAT_001db8f8 + -0x3a4c);
    if (iVar13 == 0) {
      iVar14 = 0;
    }
    else {
      piVar12 = *(int **)(PTR_DAT_001db8f8 + -0x3a24);
      iVar14 = iVar13 * 4;
      bVar2 = false;
      bVar1 = false;
      piVar8 = piVar12 + iVar13;
      iVar13 = iVar16;
      iVar10 = iVar15;
      do {
        piVar9 = (int *)*piVar12;
        if (piVar9 != (int *)0x0) {
          do {
            iVar10 = iVar10 + *(int *)(PTR_DAT_001db8f8 + -0x3a10);
            piVar6 = (int *)piVar9[4];
            if (piVar6 != (int *)0x0) {
              do {
                iVar13 = iVar13 + 0xc;
                piVar6 = (int *)*piVar6;
              } while (piVar6 != (int *)0x0);
              bVar1 = true;
            }
            piVar9 = (int *)*piVar9;
          } while (piVar9 != (int *)0x0);
          bVar2 = true;
        }
        piVar12 = piVar12 + 1;
      } while (piVar8 != piVar12);
      if (bVar1) {
        *(int *)(PTR_DAT_001db8f8 + -0x3a4c) = iVar13;
        iVar16 = iVar13;
      }
      if (bVar2) {
        *(int *)(puVar3 + -0x3a48) = iVar10;
        iVar15 = iVar10;
      }
    }
    puVar5 = PTR_xmalloc_001dc03c;
    puVar4 = PTR_DAT_001db8f8;
    *(int *)(PTR_DAT_001db8f8 + -0x3a44) = iVar14;
    uVar7 = (*(code *)puVar5)(iVar15 + iVar14 + iVar16);
    puVar5 = PTR_bfd_hash_allocate_001dbfdc;
    *(undefined4 *)(puVar4 + -0x3a3c) = uVar7;
    iVar16 = (*(code *)puVar5)(puVar3 + -0x3a24,1);
    *(int *)(PTR_DAT_001db8f8 + -0x3a40) = iVar16;
    if (iVar16 == 0) {
      return 0;
    }
    iVar16 = *(int *)(puVar4 + -0x3a3c) + *(int *)(puVar4 + -0x3a44);
    (*(code *)PTR_memcpy_001dc0e4)(*(int *)(puVar4 + -0x3a3c),*(undefined4 *)(puVar3 + -0x3a24));
    iVar15 = *(int *)(puVar3 + -0x3a24);
    iVar13 = *(int *)(puVar3 + -0x3a18);
    uVar11 = *(undefined4 *)(puVar3 + -0x3a14);
    uVar7 = *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a2c);
    puVar17 = (undefined4 *)(iVar16 + *(int *)(puVar3 + -0x3a48));
    *(int *)(PTR_DAT_001db8f8 + -0x3a30) = iVar15;
    *(int *)(PTR_DAT_001db8f8 + -0x3a34) = iVar13;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a38) = uVar11;
    *(undefined4 *)(PTR_DAT_001db8f8 + -0x3a50) = uVar7;
    if (iVar13 != 0) {
      iVar13 = 0;
      uVar18 = 0;
      while( true ) {
        for (piVar12 = *(int **)(iVar15 + iVar13); piVar12 != (int *)0x0; piVar12 = (int *)*piVar12)
        {
          (*(code *)PTR_memcpy_001dc0e4)(iVar16,piVar12,*(undefined4 *)(puVar3 + -0x3a10));
          iVar16 = iVar16 + *(int *)(puVar3 + -0x3a10);
          for (piVar8 = (int *)piVar12[4]; piVar8 != (int *)0x0; piVar8 = (int *)*piVar8) {
            uVar11 = piVar8[1];
            uVar7 = piVar8[2];
            *puVar17 = *piVar8;
            puVar17[1] = uVar11;
            puVar17[2] = uVar7;
            puVar17 = puVar17 + 3;
          }
        }
        uVar18 = uVar18 + 1;
        iVar15 = *(int *)(puVar3 + -0x3a24);
        if (*(uint *)(puVar3 + -0x3a18) <= uVar18) break;
        iVar13 = uVar18 * 4;
      }
    }
  }
  return 1;
}

