
Idx re_dfa_add_node(re_dfa_t *dfa,re_token_t token)

{
  undefined *puVar1;
  re_token_t *prVar2;
  Idx *pIVar3;
  re_node_set *prVar4;
  size_t sVar5;
  anon_union_4_5_a39f51ca_for_opr in_a1;
  uint in_a2;
  uint uVar6;
  re_node_set *prVar7;
  Idx *pIVar8;
  
  sVar5 = dfa->nodes_len;
  uVar6 = dfa->nodes_alloc;
  if (sVar5 < uVar6) {
    pIVar8 = dfa->nexts;
    prVar7 = dfa->edests;
LAB_00024828:
    prVar2 = dfa->nodes + sVar5;
    prVar2->opr = in_a1;
    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;
    if (in_a2 >> 0x18 == 5) {
      uVar6 = dfa->mb_cur_max < 2 ^ 1;
    }
    else {
      uVar6 = (uint)(in_a2 >> 0x18 == 6);
    }
    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;
    pIVar8[sVar5] = -1;
    prVar7 = prVar7 + dfa->nodes_len;
    *(undefined1 *)&prVar7->alloc = 0;
    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;
    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;
    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;
    *(undefined1 *)&prVar7->nelem = 0;
    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;
    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;
    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;
    *(undefined1 *)&prVar7->elems = 0;
    *(undefined1 *)((int)&prVar7->elems + 1) = 0;
    *(undefined1 *)((int)&prVar7->elems + 2) = 0;
    *(undefined1 *)((int)&prVar7->elems + 3) = 0;
    prVar7 = dfa->eclosures + dfa->nodes_len;
    *(undefined1 *)&prVar7->alloc = 0;
    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;
    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;
    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;
    *(undefined1 *)&prVar7->nelem = 0;
    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;
    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;
    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;
    *(undefined1 *)&prVar7->elems = 0;
    *(undefined1 *)((int)&prVar7->elems + 1) = 0;
    *(undefined1 *)((int)&prVar7->elems + 2) = 0;
    *(undefined1 *)((int)&prVar7->elems + 3) = 0;
    sVar5 = dfa->nodes_len;
    dfa->nodes_len = sVar5 + 1;
  }
  else {
    if ((uVar6 * 2 < 0x15555556) &&
       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),
       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {
      dfa->nodes = prVar2;
      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);
      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);
      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);
      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);
      if ((pIVar8 != (Idx *)0x0) &&
         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&
          (prVar4 != (re_node_set *)0x0)))) {
        sVar5 = dfa->nodes_len;
        dfa->nexts = pIVar8;
        dfa->org_indices = pIVar3;
        dfa->edests = prVar7;
        dfa->eclosures = prVar4;
        dfa->nodes_alloc = uVar6 * 2;
        goto LAB_00024828;
      }
      (*(code *)PTR_free_0004b46c)(pIVar8);
      (*(code *)PTR_free_0004b46c)(pIVar3);
      (*(code *)PTR_free_0004b46c)(prVar7);
      (*(code *)PTR_free_0004b46c)(prVar4);
    }
    sVar5 = 0xffffffff;
  }
  return sVar5;
}



int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)

{
  undefined *puVar1;
  undefined1 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  
  uVar6 = param_1[2];
  uVar7 = param_1[1];
  if (uVar6 < uVar7) {
    iVar9 = param_1[3];
    iVar8 = param_1[5];
LAB_00024828:
    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);
    *puVar5 = param_2;
    puVar5[1] = param_3 & 0xff003fff;
    if (param_3 >> 0x18 == 5) {
      uVar7 = param_1[0x17] < 2 ^ 1;
    }
    else {
      uVar7 = (uint)(param_3 >> 0x18 == 6);
    }
    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;
    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;
    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    iVar9 = param_1[2];
    param_1[2] = iVar9 + 1;
  }
  else {
    if ((uVar7 * 2 < 0x15555556) &&
       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,
       iVar9 != 0)) {
      *param_1 = iVar9;
      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);
      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);
      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);
      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);
      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {
        uVar6 = param_1[2];
        param_1[3] = iVar9;
        param_1[4] = iVar3;
        param_1[5] = iVar8;
        param_1[6] = iVar4;
        param_1[1] = uVar7 * 2;
        goto LAB_00024828;
      }
      (*(code *)PTR_free_0004b46c)(iVar9);
      (*(code *)PTR_free_0004b46c)(iVar3);
      (*(code *)PTR_free_0004b46c)(iVar8);
      (*(code *)PTR_free_0004b46c)(iVar4);
    }
    iVar9 = -1;
  }
  return iVar9;
}


lui gp,0x3
addiu gp,gp,-0x1680
addu gp,gp,t9
addiu sp,sp,-0x40
sw s1,0x28(sp)
or s1,a0,zero
sw s0,0x24(sp)
sw gp,0x10(sp)
sw s2,0x2c(sp)
sw ra,0x3c(sp)
sw s5,0x38(sp)
sw s4,0x34(sp)
sw s3,0x30(sp)
sw a1,0x44(sp)
sw a2,0x48(sp)
lw a0,0x8(a0)
lw s0,0x4(s1)
sltu v0,a0,s0
beq v0,zero,0x00024940
_srl s2,a2,0x18
lw s3,0xc(s1)
lw s0,0x14(s1)
lw v0,0x0(s1)
sll v1,a0,0x3
lw a1,0x48(sp)
li a2,0x5
addu v1,v0,v1
lw v0,0x44(sp)
ins a1,zero,0xe,0xa
sw v0,0x0(v1)
beq s2,a2,0x00024930
_sw a1,0x4(v1)
xori s2,s2,0x6
sltiu s2,s2,0x1
lw v0,0x4(v1)
sll a0,a0,0x2
addu a0,s3,a0
ins v0,s2,0xb,0x1
sw v0,0x4(v1)
li v0,-0x1
sw v0,0x0(a0)
lw v1,0x8(s1)
sll v0,v1,0x1
addu v0,v0,v1
sll v0,v0,0x2
addu v0,s0,v0
sb zero,0x0(v0)
sb zero,0x1(v0)
sb zero,0x2(v0)
sb zero,0x3(v0)
sb zero,0x4(v0)
sb zero,0x5(v0)
sb zero,0x6(v0)
sb zero,0x7(v0)
sb zero,0x8(v0)
sb zero,0x9(v0)
sb zero,0xa(v0)
sb zero,0xb(v0)
lw a0,0x8(s1)
lw v0,0x18(s1)
sll v1,a0,0x1
addu v1,v1,a0
sll v1,v1,0x2
addu v0,v0,v1
sb zero,0x0(v0)
sb zero,0x1(v0)
sb zero,0x2(v0)
sb zero,0x3(v0)
sb zero,0x4(v0)
sb zero,0x5(v0)
sb zero,0x6(v0)
sb zero,0x7(v0)
sb zero,0x8(v0)
sb zero,0x9(v0)
sb zero,0xa(v0)
sb zero,0xb(v0)
lw v0,0x8(s1)
addiu v1,v0,0x1
sw v1,0x8(s1)
lw ra,0x3c(sp)
lw s5,0x38(sp)
lw s4,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x40
lw s2,0x5c(s1)
slti s2,s2,0x2
b 0x00024858
_xori s2,s2,0x1
lui v0,0x1555
sll s4,s0,0x1
addiu v0,v0,0x5556
sltu v0,s4,v0
beq v0,zero,0x00024a54
_lw t9,-0x7d64(gp)
sll a1,s0,0x4
jalr t9
_lw a0,0x0(s1)
beq v0,zero,0x00024a54
_lw gp,0x10(sp)
sll s3,s0,0x3
lw t9,-0x7d64(gp)
lw a0,0xc(s1)
addu s0,s4,s0
or a1,s3,zero
sw v0,0x0(s1)
jalr t9
_sll s0,s0,0x3
or a1,s3,zero
lw gp,0x10(sp)
or s3,v0,zero
lw t9,-0x7d64(gp)
jalr t9
_lw a0,0x10(s1)
or a1,s0,zero
lw gp,0x10(sp)
or s5,v0,zero
lw t9,-0x7d64(gp)
jalr t9
_lw a0,0x14(s1)
or a1,s0,zero
lw gp,0x10(sp)
or s0,v0,zero
lw t9,-0x7d64(gp)
jalr t9
_lw a0,0x18(s1)
beq s3,zero,0x00024a10
_lw gp,0x10(sp)
beq s5,zero,0x00024a14
_lw t9,-0x7ce4(gp)
beq s0,zero,0x00024a14
_nop
beq v0,zero,0x00024a14
_nop
lw a0,0x8(s1)
sw s3,0xc(s1)
sw s5,0x10(s1)
sw s0,0x14(s1)
sw v0,0x18(s1)
b 0x00024828
_sw s4,0x4(s1)
lw t9,-0x7ce4(gp)
or a0,s3,zero
jalr t9
_sw v0,0x1c(sp)
lw gp,0x10(sp)
lw t9,-0x7ce4(gp)
jalr t9
_or a0,s5,zero
lw gp,0x10(sp)
lw t9,-0x7ce4(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
lw v0,0x1c(sp)
lw t9,-0x7ce4(gp)
jalr t9
_or a0,v0,zero
b 0x0002490c
_li v0,-0x1
(translation_unit "int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}\n\n" (function_definition "int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" primitive_type (function_declarator "FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(int *param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" if (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) )) (compound_statement "{\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }" { (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = param_1[5];" (assignment_expression "iVar8 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" statement_identifier : (expression_statement "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" (assignment_expression "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8)" identifier = (cast_expression "(undefined4 *)(*param_1 + uVar6 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + uVar6 * 8)" ( (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) )))) ;)) (expression_statement "*puVar5 = param_2;" (assignment_expression "*puVar5 = param_2" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[1] = param_3 & 0xff003fff;" (assignment_expression "puVar5[1] = param_3 & 0xff003fff" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "param_3 & 0xff003fff" identifier & number_literal)) ;) (if_statement "if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" if (parenthesized_expression "(param_3 >> 0x18 == 5)" ( (binary_expression "param_3 >> 0x18 == 5" (binary_expression "param_3 >> 0x18" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }" { (expression_statement "uVar7 = param_1[0x17] < 2 ^ 1;" (assignment_expression "uVar7 = param_1[0x17] < 2 ^ 1" identifier = (binary_expression "param_1[0x17] < 2 ^ 1" (binary_expression "param_1[0x17] < 2" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) < number_literal) ^ number_literal)) ;) }) (else_clause "else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" else (compound_statement "{\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" { (expression_statement "uVar7 = (uint)(param_3 >> 0x18 == 6);" (assignment_expression "uVar7 = (uint)(param_3 >> 0x18 == 6)" identifier = (call_expression "(uint)(param_3 >> 0x18 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 >> 0x18 == 6)" ( (binary_expression "param_3 >> 0x18 == 6" (binary_expression "param_3 >> 0x18" identifier >> number_literal) == number_literal) )))) ;) }))) (expression_statement "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;" (assignment_expression "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (binary_expression "puVar5[1] & 0xfffff7ff" (subscript_expression "puVar5[1]" identifier [ number_literal ]) & number_literal) | (binary_expression "uVar7 << 0xb" identifier << number_literal))) ;) (expression_statement "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + uVar6 * 4)" * (cast_expression "(undefined4 *)(iVar9 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar6 * 4)" ( (binary_expression "iVar9 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc)" identifier = (cast_expression "(undefined1 *)(iVar8 + param_1[2] * 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_1[2] * 0xc)" ( (binary_expression "iVar8 + param_1[2] * 0xc" identifier + (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal)) )))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc)" identifier = (cast_expression "(undefined1 *)(param_1[6] + param_1[2] * 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + param_1[2] * 0xc)" ( (binary_expression "param_1[6] + param_1[2] * 0xc" (subscript_expression "param_1[6]" identifier [ number_literal ]) + (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal)) )))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = iVar9 + 1;" (assignment_expression "param_1[2] = iVar9 + 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" else (compound_statement "{\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" { (if_statement "if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" if (parenthesized_expression "((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0))" ( (binary_expression "(uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" (parenthesized_expression "(uVar7 * 2 < 0x15555556)" ( (binary_expression "uVar7 * 2 < 0x15555556" (binary_expression "uVar7 * 2" identifier * number_literal) < number_literal) )) && (parenthesized_expression "(iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" ( (comma_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_1,uVar7 << 4)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "uVar7 << 4" identifier << number_literal) )))) , (comma_expression "puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "puVar1 = PTR_realloc_0004b3ec" identifier = identifier) , (binary_expression "iVar9 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" { (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);" (assignment_expression "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3)" identifier = (call_expression "(*(code *)puVar1)(param_1[3],uVar7 << 3)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[3],uVar7 << 3)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , (binary_expression "uVar7 << 3" identifier << number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);" (assignment_expression "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[4],uVar7 << 3)" ( (subscript_expression "param_1[4]" identifier [ number_literal ]) , (binary_expression "uVar7 << 3" identifier << number_literal) )))) ;) (expression_statement "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);" (assignment_expression "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[5],uVar7 * 0x18)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , (binary_expression "uVar7 * 0x18" identifier * number_literal) )))) ;) (expression_statement "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);" (assignment_expression "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[6],uVar7 * 0x18)" ( (subscript_expression "param_1[6]" identifier [ number_literal ]) , (binary_expression "uVar7 * 0x18" identifier * number_literal) )))) ;) (if_statement "if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" if (parenthesized_expression "((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))))" ( (binary_expression "(iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" ( (parenthesized_expression "((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))" ( (binary_expression "(iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)" (parenthesized_expression "(iVar3 != 0 && (iVar8 != 0))" ( (binary_expression "iVar3 != 0 && (iVar8 != 0)" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) ))) )) ))) )) (compound_statement "{\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" { (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = iVar9;" (assignment_expression "param_1[3] = iVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = iVar3;" (assignment_expression "param_1[4] = iVar3" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = iVar8;" (assignment_expression "param_1[5] = iVar8" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = iVar4;" (assignment_expression "param_1[6] = iVar4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = uVar7 * 2;" (assignment_expression "param_1[1] = uVar7 * 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar7 * 2" identifier * number_literal)) ;) (goto_statement "goto LAB_00024828;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar9);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar9)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar3);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar3)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar8);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar8)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar4);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar4)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) })) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" identifier = number_literal) ;) }))) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit "Idx re_dfa_add_node(re_dfa_t *dfa,re_token_t token)\n\n{\n  undefined *puVar1;\n  re_token_t *prVar2;\n  Idx *pIVar3;\n  re_node_set *prVar4;\n  size_t sVar5;\n  anon_union_4_5_a39f51ca_for_opr in_a1;\n  uint in_a2;\n  uint uVar6;\n  re_node_set *prVar7;\n  Idx *pIVar8;\n  \n  sVar5 = dfa->nodes_len;\n  uVar6 = dfa->nodes_alloc;\n  if (sVar5 < uVar6) {\n    pIVar8 = dfa->nexts;\n    prVar7 = dfa->edests;\nLAB_00024828:\n    prVar2 = dfa->nodes + sVar5;\n    prVar2->opr = in_a1;\n    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;\n    if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }\n    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;\n    pIVar8[sVar5] = -1;\n    prVar7 = prVar7 + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    prVar7 = dfa->eclosures + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    sVar5 = dfa->nodes_len;\n    dfa->nodes_len = sVar5 + 1;\n  }\n  else {\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }\n  return sVar5;\n}\n\n" (function_definition "Idx re_dfa_add_node(re_dfa_t *dfa,re_token_t token)\n\n{\n  undefined *puVar1;\n  re_token_t *prVar2;\n  Idx *pIVar3;\n  re_node_set *prVar4;\n  size_t sVar5;\n  anon_union_4_5_a39f51ca_for_opr in_a1;\n  uint in_a2;\n  uint uVar6;\n  re_node_set *prVar7;\n  Idx *pIVar8;\n  \n  sVar5 = dfa->nodes_len;\n  uVar6 = dfa->nodes_alloc;\n  if (sVar5 < uVar6) {\n    pIVar8 = dfa->nexts;\n    prVar7 = dfa->edests;\nLAB_00024828:\n    prVar2 = dfa->nodes + sVar5;\n    prVar2->opr = in_a1;\n    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;\n    if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }\n    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;\n    pIVar8[sVar5] = -1;\n    prVar7 = prVar7 + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    prVar7 = dfa->eclosures + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    sVar5 = dfa->nodes_len;\n    dfa->nodes_len = sVar5 + 1;\n  }\n  else {\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }\n  return sVar5;\n}" type_identifier (function_declarator "re_dfa_add_node(re_dfa_t *dfa,re_token_t token)" identifier (parameter_list "(re_dfa_t *dfa,re_token_t token)" ( (parameter_declaration "re_dfa_t *dfa" type_identifier (pointer_declarator "*dfa" * identifier)) , (parameter_declaration "re_token_t token" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  re_token_t *prVar2;\n  Idx *pIVar3;\n  re_node_set *prVar4;\n  size_t sVar5;\n  anon_union_4_5_a39f51ca_for_opr in_a1;\n  uint in_a2;\n  uint uVar6;\n  re_node_set *prVar7;\n  Idx *pIVar8;\n  \n  sVar5 = dfa->nodes_len;\n  uVar6 = dfa->nodes_alloc;\n  if (sVar5 < uVar6) {\n    pIVar8 = dfa->nexts;\n    prVar7 = dfa->edests;\nLAB_00024828:\n    prVar2 = dfa->nodes + sVar5;\n    prVar2->opr = in_a1;\n    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;\n    if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }\n    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;\n    pIVar8[sVar5] = -1;\n    prVar7 = prVar7 + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    prVar7 = dfa->eclosures + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    sVar5 = dfa->nodes_len;\n    dfa->nodes_len = sVar5 + 1;\n  }\n  else {\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }\n  return sVar5;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "re_token_t *prVar2;" type_identifier (pointer_declarator "*prVar2" * identifier) ;) (declaration "Idx *pIVar3;" type_identifier (pointer_declarator "*pIVar3" * identifier) ;) (declaration "re_node_set *prVar4;" type_identifier (pointer_declarator "*prVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "anon_union_4_5_a39f51ca_for_opr in_a1;" type_identifier identifier ;) (declaration "uint in_a2;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "re_node_set *prVar7;" type_identifier (pointer_declarator "*prVar7" * identifier) ;) (declaration "Idx *pIVar8;" type_identifier (pointer_declarator "*pIVar8" * identifier) ;) (expression_statement "sVar5 = dfa->nodes_len;" (assignment_expression "sVar5 = dfa->nodes_len" identifier = (field_expression "dfa->nodes_len" identifier -> field_identifier)) ;) (expression_statement "uVar6 = dfa->nodes_alloc;" (assignment_expression "uVar6 = dfa->nodes_alloc" identifier = (field_expression "dfa->nodes_alloc" identifier -> field_identifier)) ;) (if_statement "if (sVar5 < uVar6) {\n    pIVar8 = dfa->nexts;\n    prVar7 = dfa->edests;\nLAB_00024828:\n    prVar2 = dfa->nodes + sVar5;\n    prVar2->opr = in_a1;\n    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;\n    if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }\n    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;\n    pIVar8[sVar5] = -1;\n    prVar7 = prVar7 + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    prVar7 = dfa->eclosures + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    sVar5 = dfa->nodes_len;\n    dfa->nodes_len = sVar5 + 1;\n  }\n  else {\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }" if (parenthesized_expression "(sVar5 < uVar6)" ( (binary_expression "sVar5 < uVar6" identifier < identifier) )) (compound_statement "{\n    pIVar8 = dfa->nexts;\n    prVar7 = dfa->edests;\nLAB_00024828:\n    prVar2 = dfa->nodes + sVar5;\n    prVar2->opr = in_a1;\n    *(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;\n    if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }\n    *(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;\n    pIVar8[sVar5] = -1;\n    prVar7 = prVar7 + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    prVar7 = dfa->eclosures + dfa->nodes_len;\n    *(undefined1 *)&prVar7->alloc = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 1) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 2) = 0;\n    *(undefined1 *)((int)&prVar7->alloc + 3) = 0;\n    *(undefined1 *)&prVar7->nelem = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 1) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 2) = 0;\n    *(undefined1 *)((int)&prVar7->nelem + 3) = 0;\n    *(undefined1 *)&prVar7->elems = 0;\n    *(undefined1 *)((int)&prVar7->elems + 1) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 2) = 0;\n    *(undefined1 *)((int)&prVar7->elems + 3) = 0;\n    sVar5 = dfa->nodes_len;\n    dfa->nodes_len = sVar5 + 1;\n  }" { (expression_statement "pIVar8 = dfa->nexts;" (assignment_expression "pIVar8 = dfa->nexts" identifier = (field_expression "dfa->nexts" identifier -> field_identifier)) ;) (expression_statement "prVar7 = dfa->edests;" (assignment_expression "prVar7 = dfa->edests" identifier = (field_expression "dfa->edests" identifier -> field_identifier)) ;) (labeled_statement "LAB_00024828:\n    prVar2 = dfa->nodes + sVar5;" statement_identifier : (expression_statement "prVar2 = dfa->nodes + sVar5;" (assignment_expression "prVar2 = dfa->nodes + sVar5" identifier = (binary_expression "dfa->nodes + sVar5" (field_expression "dfa->nodes" identifier -> field_identifier) + identifier)) ;)) (expression_statement "prVar2->opr = in_a1;" (assignment_expression "prVar2->opr = in_a1" (field_expression "prVar2->opr" identifier -> field_identifier) = identifier) ;) (expression_statement "*(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff;" (assignment_expression "*(uint *)&prVar2->field_0x4 = in_a2 & 0xff003fff" (pointer_expression "*(uint *)&prVar2->field_0x4" * (cast_expression "(uint *)&prVar2->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar2->field_0x4" & (field_expression "prVar2->field_0x4" identifier -> field_identifier)))) = (binary_expression "in_a2 & 0xff003fff" identifier & number_literal)) ;) (if_statement "if (in_a2 >> 0x18 == 5) {\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }\n    else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }" if (parenthesized_expression "(in_a2 >> 0x18 == 5)" ( (binary_expression "in_a2 >> 0x18 == 5" (binary_expression "in_a2 >> 0x18" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar6 = dfa->mb_cur_max < 2 ^ 1;\n    }" { (expression_statement "uVar6 = dfa->mb_cur_max < 2 ^ 1;" (assignment_expression "uVar6 = dfa->mb_cur_max < 2 ^ 1" identifier = (binary_expression "dfa->mb_cur_max < 2 ^ 1" (binary_expression "dfa->mb_cur_max < 2" (field_expression "dfa->mb_cur_max" identifier -> field_identifier) < number_literal) ^ number_literal)) ;) }) (else_clause "else {\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }" else (compound_statement "{\n      uVar6 = (uint)(in_a2 >> 0x18 == 6);\n    }" { (expression_statement "uVar6 = (uint)(in_a2 >> 0x18 == 6);" (assignment_expression "uVar6 = (uint)(in_a2 >> 0x18 == 6)" identifier = (call_expression "(uint)(in_a2 >> 0x18 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_a2 >> 0x18 == 6)" ( (binary_expression "in_a2 >> 0x18 == 6" (binary_expression "in_a2 >> 0x18" identifier >> number_literal) == number_literal) )))) ;) }))) (expression_statement "*(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb;" (assignment_expression "*(uint *)&prVar2->field_0x4 = *(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb" (pointer_expression "*(uint *)&prVar2->field_0x4" * (cast_expression "(uint *)&prVar2->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar2->field_0x4" & (field_expression "prVar2->field_0x4" identifier -> field_identifier)))) = (binary_expression "*(uint *)&prVar2->field_0x4 & 0xfffff7ff | uVar6 << 0xb" (binary_expression "*(uint *)&prVar2->field_0x4 & 0xfffff7ff" (pointer_expression "*(uint *)&prVar2->field_0x4" * (cast_expression "(uint *)&prVar2->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar2->field_0x4" & (field_expression "prVar2->field_0x4" identifier -> field_identifier)))) & number_literal) | (binary_expression "uVar6 << 0xb" identifier << number_literal))) ;) (expression_statement "pIVar8[sVar5] = -1;" (assignment_expression "pIVar8[sVar5] = -1" (subscript_expression "pIVar8[sVar5]" identifier [ identifier ]) = number_literal) ;) (expression_statement "prVar7 = prVar7 + dfa->nodes_len;" (assignment_expression "prVar7 = prVar7 + dfa->nodes_len" identifier = (binary_expression "prVar7 + dfa->nodes_len" identifier + (field_expression "dfa->nodes_len" identifier -> field_identifier))) ;) (expression_statement "*(undefined1 *)&prVar7->alloc = 0;" (assignment_expression "*(undefined1 *)&prVar7->alloc = 0" (pointer_expression "*(undefined1 *)&prVar7->alloc" * (cast_expression "(undefined1 *)&prVar7->alloc" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 1)" ( (binary_expression "(int)&prVar7->alloc + 1" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 2)" ( (binary_expression "(int)&prVar7->alloc + 2" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 3)" ( (binary_expression "(int)&prVar7->alloc + 3" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)&prVar7->nelem = 0;" (assignment_expression "*(undefined1 *)&prVar7->nelem = 0" (pointer_expression "*(undefined1 *)&prVar7->nelem" * (cast_expression "(undefined1 *)&prVar7->nelem" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 1)" ( (binary_expression "(int)&prVar7->nelem + 1" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 2)" ( (binary_expression "(int)&prVar7->nelem + 2" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 3)" ( (binary_expression "(int)&prVar7->nelem + 3" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)&prVar7->elems = 0;" (assignment_expression "*(undefined1 *)&prVar7->elems = 0" (pointer_expression "*(undefined1 *)&prVar7->elems" * (cast_expression "(undefined1 *)&prVar7->elems" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 1)" ( (binary_expression "(int)&prVar7->elems + 1" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 2)" ( (binary_expression "(int)&prVar7->elems + 2" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 3)" ( (binary_expression "(int)&prVar7->elems + 3" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "prVar7 = dfa->eclosures + dfa->nodes_len;" (assignment_expression "prVar7 = dfa->eclosures + dfa->nodes_len" identifier = (binary_expression "dfa->eclosures + dfa->nodes_len" (field_expression "dfa->eclosures" identifier -> field_identifier) + (field_expression "dfa->nodes_len" identifier -> field_identifier))) ;) (expression_statement "*(undefined1 *)&prVar7->alloc = 0;" (assignment_expression "*(undefined1 *)&prVar7->alloc = 0" (pointer_expression "*(undefined1 *)&prVar7->alloc" * (cast_expression "(undefined1 *)&prVar7->alloc" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 1)" ( (binary_expression "(int)&prVar7->alloc + 1" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 2)" ( (binary_expression "(int)&prVar7->alloc + 2" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->alloc + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->alloc + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->alloc + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->alloc + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->alloc + 3)" ( (binary_expression "(int)&prVar7->alloc + 3" (cast_expression "(int)&prVar7->alloc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->alloc" & (field_expression "prVar7->alloc" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)&prVar7->nelem = 0;" (assignment_expression "*(undefined1 *)&prVar7->nelem = 0" (pointer_expression "*(undefined1 *)&prVar7->nelem" * (cast_expression "(undefined1 *)&prVar7->nelem" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 1)" ( (binary_expression "(int)&prVar7->nelem + 1" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 2)" ( (binary_expression "(int)&prVar7->nelem + 2" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->nelem + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->nelem + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->nelem + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->nelem + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->nelem + 3)" ( (binary_expression "(int)&prVar7->nelem + 3" (cast_expression "(int)&prVar7->nelem" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->nelem" & (field_expression "prVar7->nelem" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)&prVar7->elems = 0;" (assignment_expression "*(undefined1 *)&prVar7->elems = 0" (pointer_expression "*(undefined1 *)&prVar7->elems" * (cast_expression "(undefined1 *)&prVar7->elems" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier)))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 1) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 1) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 1)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 1)" ( (binary_expression "(int)&prVar7->elems + 1" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 2) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 2) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 2)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 2)" ( (binary_expression "(int)&prVar7->elems + 2" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((int)&prVar7->elems + 3) = 0;" (assignment_expression "*(undefined1 *)((int)&prVar7->elems + 3) = 0" (pointer_expression "*(undefined1 *)((int)&prVar7->elems + 3)" * (cast_expression "(undefined1 *)((int)&prVar7->elems + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prVar7->elems + 3)" ( (binary_expression "(int)&prVar7->elems + 3" (cast_expression "(int)&prVar7->elems" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar7->elems" & (field_expression "prVar7->elems" identifier -> field_identifier))) + number_literal) )))) = number_literal) ;) (expression_statement "sVar5 = dfa->nodes_len;" (assignment_expression "sVar5 = dfa->nodes_len" identifier = (field_expression "dfa->nodes_len" identifier -> field_identifier)) ;) (expression_statement "dfa->nodes_len = sVar5 + 1;" (assignment_expression "dfa->nodes_len = sVar5 + 1" (field_expression "dfa->nodes_len" identifier -> field_identifier) = (binary_expression "sVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }" else (compound_statement "{\n    if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }\n    sVar5 = 0xffffffff;\n  }" { (if_statement "if ((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)) {\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }" if (parenthesized_expression "((uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0))" ( (binary_expression "(uVar6 * 2 < 0x15555556) &&\n       (prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)" (parenthesized_expression "(uVar6 * 2 < 0x15555556)" ( (binary_expression "uVar6 * 2 < 0x15555556" (binary_expression "uVar6 * 2" identifier * number_literal) < number_literal) )) && (parenthesized_expression "(prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0)" ( (comma_expression "prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4),\n       puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0" (assignment_expression "prVar2 = (re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4)" identifier = (cast_expression "(re_token_t *)(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4)" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0004b3ec)(dfa->nodes,uVar6 << 4)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dfa->nodes,uVar6 << 4)" ( (field_expression "dfa->nodes" identifier -> field_identifier) , (binary_expression "uVar6 << 4" identifier << number_literal) ))))) , (comma_expression "puVar1 = PTR_realloc_0004b3ec, prVar2 != (re_token_t *)0x0" (assignment_expression "puVar1 = PTR_realloc_0004b3ec" identifier = identifier) , (binary_expression "prVar2 != (re_token_t *)0x0" identifier != (cast_expression "(re_token_t *)0x0" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n      dfa->nodes = prVar2;\n      pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);\n      pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);\n      prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);\n      prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);\n      if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(pIVar8);\n      (*(code *)PTR_free_0004b46c)(pIVar3);\n      (*(code *)PTR_free_0004b46c)(prVar7);\n      (*(code *)PTR_free_0004b46c)(prVar4);\n    }" { (expression_statement "dfa->nodes = prVar2;" (assignment_expression "dfa->nodes = prVar2" (field_expression "dfa->nodes" identifier -> field_identifier) = identifier) ;) (expression_statement "pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3);" (assignment_expression "pIVar8 = (Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3)" identifier = (cast_expression "(Idx *)(*(code *)puVar1)(dfa->nexts,uVar6 << 3)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)puVar1)(dfa->nexts,uVar6 << 3)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dfa->nexts,uVar6 << 3)" ( (field_expression "dfa->nexts" identifier -> field_identifier) , (binary_expression "uVar6 << 3" identifier << number_literal) ))))) ;) (expression_statement "pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3);" (assignment_expression "pIVar3 = (Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3)" identifier = (cast_expression "(Idx *)(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0004b3ec)(dfa->org_indices,uVar6 << 3)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dfa->org_indices,uVar6 << 3)" ( (field_expression "dfa->org_indices" identifier -> field_identifier) , (binary_expression "uVar6 << 3" identifier << number_literal) ))))) ;) (expression_statement "prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18);" (assignment_expression "prVar7 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18)" identifier = (cast_expression "(re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0004b3ec)(dfa->edests,uVar6 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dfa->edests,uVar6 * 0x18)" ( (field_expression "dfa->edests" identifier -> field_identifier) , (binary_expression "uVar6 * 0x18" identifier * number_literal) ))))) ;) (expression_statement "prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18);" (assignment_expression "prVar4 = (re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18)" identifier = (cast_expression "(re_node_set *)(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18)" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0004b3ec)(dfa->eclosures,uVar6 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dfa->eclosures,uVar6 * 0x18)" ( (field_expression "dfa->eclosures" identifier -> field_identifier) , (binary_expression "uVar6 * 0x18" identifier * number_literal) ))))) ;) (if_statement "if ((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))) {\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }" if (parenthesized_expression "((pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0))))" ( (binary_expression "(pIVar8 != (Idx *)0x0) &&\n         (((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))" (parenthesized_expression "(pIVar8 != (Idx *)0x0)" ( (binary_expression "pIVar8 != (Idx *)0x0" identifier != (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)))" ( (parenthesized_expression "((pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0))" ( (binary_expression "(pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)) &&\n          (prVar4 != (re_node_set *)0x0)" (parenthesized_expression "(pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0))" ( (binary_expression "pIVar3 != (Idx *)0x0 && (prVar7 != (re_node_set *)0x0)" (binary_expression "pIVar3 != (Idx *)0x0" identifier != (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(prVar7 != (re_node_set *)0x0)" ( (binary_expression "prVar7 != (re_node_set *)0x0" identifier != (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(prVar4 != (re_node_set *)0x0)" ( (binary_expression "prVar4 != (re_node_set *)0x0" identifier != (cast_expression "(re_node_set *)0x0" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) ))) )) (compound_statement "{\n        sVar5 = dfa->nodes_len;\n        dfa->nexts = pIVar8;\n        dfa->org_indices = pIVar3;\n        dfa->edests = prVar7;\n        dfa->eclosures = prVar4;\n        dfa->nodes_alloc = uVar6 * 2;\n        goto LAB_00024828;\n      }" { (expression_statement "sVar5 = dfa->nodes_len;" (assignment_expression "sVar5 = dfa->nodes_len" identifier = (field_expression "dfa->nodes_len" identifier -> field_identifier)) ;) (expression_statement "dfa->nexts = pIVar8;" (assignment_expression "dfa->nexts = pIVar8" (field_expression "dfa->nexts" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->org_indices = pIVar3;" (assignment_expression "dfa->org_indices = pIVar3" (field_expression "dfa->org_indices" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->edests = prVar7;" (assignment_expression "dfa->edests = prVar7" (field_expression "dfa->edests" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->eclosures = prVar4;" (assignment_expression "dfa->eclosures = prVar4" (field_expression "dfa->eclosures" identifier -> field_identifier) = identifier) ;) (expression_statement "dfa->nodes_alloc = uVar6 * 2;" (assignment_expression "dfa->nodes_alloc = uVar6 * 2" (field_expression "dfa->nodes_alloc" identifier -> field_identifier) = (binary_expression "uVar6 * 2" identifier * number_literal)) ;) (goto_statement "goto LAB_00024828;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR_free_0004b46c)(pIVar8);" (call_expression "(*(code *)PTR_free_0004b46c)(pIVar8)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pIVar8)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(pIVar3);" (call_expression "(*(code *)PTR_free_0004b46c)(pIVar3)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pIVar3)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(prVar7);" (call_expression "(*(code *)PTR_free_0004b46c)(prVar7)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(prVar7)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(prVar4);" (call_expression "(*(code *)PTR_free_0004b46c)(prVar4)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(prVar4)" ( identifier ))) ;) })) (expression_statement "sVar5 = 0xffffffff;" (assignment_expression "sVar5 = 0xffffffff" identifier = number_literal) ;) }))) (return_statement "return sVar5;" return identifier ;) })))
(translation_unit "int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}\n\n" (function_definition "int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" primitive_type (function_declarator "FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)" identifier (parameter_list "(int *param_1,undefined4 param_2,uint param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" if (parenthesized_expression "(uVar6 < uVar7)" ( (binary_expression "uVar6 < uVar7" identifier < identifier) )) (compound_statement "{\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }" { (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = param_1[5];" (assignment_expression "iVar8 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" statement_identifier : (expression_statement "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" (assignment_expression "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8)" identifier = (cast_expression "(undefined4 *)(*param_1 + uVar6 * 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + uVar6 * 8)" ( (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) )))) ;)) (expression_statement "*puVar5 = param_2;" (assignment_expression "*puVar5 = param_2" (pointer_expression "*puVar5" * identifier) = identifier) ;) (expression_statement "puVar5[1] = param_3 & 0xff003fff;" (assignment_expression "puVar5[1] = param_3 & 0xff003fff" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "param_3 & 0xff003fff" identifier & number_literal)) ;) (if_statement "if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" if (parenthesized_expression "(param_3 >> 0x18 == 5)" ( (binary_expression "param_3 >> 0x18 == 5" (binary_expression "param_3 >> 0x18" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }" { (expression_statement "uVar7 = param_1[0x17] < 2 ^ 1;" (assignment_expression "uVar7 = param_1[0x17] < 2 ^ 1" identifier = (binary_expression "param_1[0x17] < 2 ^ 1" (binary_expression "param_1[0x17] < 2" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) < number_literal) ^ number_literal)) ;) }) (else_clause "else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" else (compound_statement "{\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" { (expression_statement "uVar7 = (uint)(param_3 >> 0x18 == 6);" (assignment_expression "uVar7 = (uint)(param_3 >> 0x18 == 6)" identifier = (call_expression "(uint)(param_3 >> 0x18 == 6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_3 >> 0x18 == 6)" ( (binary_expression "param_3 >> 0x18 == 6" (binary_expression "param_3 >> 0x18" identifier >> number_literal) == number_literal) )))) ;) }))) (expression_statement "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;" (assignment_expression "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = (binary_expression "puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (binary_expression "puVar5[1] & 0xfffff7ff" (subscript_expression "puVar5[1]" identifier [ number_literal ]) & number_literal) | (binary_expression "uVar7 << 0xb" identifier << number_literal))) ;) (expression_statement "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + uVar6 * 4)" * (cast_expression "(undefined4 *)(iVar9 + uVar6 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + uVar6 * 4)" ( (binary_expression "iVar9 + uVar6 * 4" identifier + (binary_expression "uVar6 * 4" identifier * number_literal)) )))) = number_literal) ;) (expression_statement "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc)" identifier = (cast_expression "(undefined1 *)(iVar8 + param_1[2] * 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + param_1[2] * 0xc)" ( (binary_expression "iVar8 + param_1[2] * 0xc" identifier + (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal)) )))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc)" identifier = (cast_expression "(undefined1 *)(param_1[6] + param_1[2] * 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + param_1[2] * 0xc)" ( (binary_expression "param_1[6] + param_1[2] * 0xc" (subscript_expression "param_1[6]" identifier [ number_literal ]) + (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" identifier [ number_literal ]) * number_literal)) )))) ;) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = iVar9 + 1;" (assignment_expression "param_1[2] = iVar9 + 1" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" else (compound_statement "{\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" { (if_statement "if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" if (parenthesized_expression "((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0))" ( (binary_expression "(uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" (parenthesized_expression "(uVar7 * 2 < 0x15555556)" ( (binary_expression "uVar7 * 2 < 0x15555556" (binary_expression "uVar7 * 2" identifier * number_literal) < number_literal) )) && (parenthesized_expression "(iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" ( (comma_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_1,uVar7 << 4)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "uVar7 << 4" identifier << number_literal) )))) , (comma_expression "puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "puVar1 = PTR_realloc_0004b3ec" identifier = identifier) , (binary_expression "iVar9 != 0" identifier != number_literal))) ))) )) (compound_statement "{\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" { (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);" (assignment_expression "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3)" identifier = (call_expression "(*(code *)puVar1)(param_1[3],uVar7 << 3)" (parenthesized_expression "(*(code *)puVar1)" ( (pointer_expression "*(code *)puVar1" * (cast_expression "(code *)puVar1" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[3],uVar7 << 3)" ( (subscript_expression "param_1[3]" identifier [ number_literal ]) , (binary_expression "uVar7 << 3" identifier << number_literal) )))) ;) (expression_statement "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);" (assignment_expression "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[4],uVar7 << 3)" ( (subscript_expression "param_1[4]" identifier [ number_literal ]) , (binary_expression "uVar7 << 3" identifier << number_literal) )))) ;) (expression_statement "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);" (assignment_expression "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[5],uVar7 * 0x18)" ( (subscript_expression "param_1[5]" identifier [ number_literal ]) , (binary_expression "uVar7 * 0x18" identifier * number_literal) )))) ;) (expression_statement "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);" (assignment_expression "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" identifier = (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" ( (pointer_expression "*(code *)PTR_realloc_0004b3ec" * (cast_expression "(code *)PTR_realloc_0004b3ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[6],uVar7 * 0x18)" ( (subscript_expression "param_1[6]" identifier [ number_literal ]) , (binary_expression "uVar7 * 0x18" identifier * number_literal) )))) ;) (if_statement "if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" if (parenthesized_expression "((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))))" ( (binary_expression "(iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" ( (parenthesized_expression "((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))" ( (binary_expression "(iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)" (parenthesized_expression "(iVar3 != 0 && (iVar8 != 0))" ( (binary_expression "iVar3 != 0 && (iVar8 != 0)" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) ))) )) ))) )) (compound_statement "{\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" { (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "param_1[3] = iVar9;" (assignment_expression "param_1[3] = iVar9" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[4] = iVar3;" (assignment_expression "param_1[4] = iVar3" (subscript_expression "param_1[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[5] = iVar8;" (assignment_expression "param_1[5] = iVar8" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = iVar4;" (assignment_expression "param_1[6] = iVar4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[1] = uVar7 * 2;" (assignment_expression "param_1[1] = uVar7 * 2" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar7 * 2" identifier * number_literal)) ;) (goto_statement "goto LAB_00024828;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar9);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar9)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar3);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar3)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar8);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar8)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar8)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar4);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar4)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" ( (pointer_expression "*(code *)PTR_free_0004b46c" * (cast_expression "(code *)PTR_free_0004b46c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4)" ( identifier ))) ;) })) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" identifier = number_literal) ;) }))) (return_statement "return iVar9;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) < LIT) ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) < LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) , (binary_expression IDENT << LIT) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT * LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)\n\n{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" (primitive_type "int") (function_declarator "FUN_000247d0(int *param_1,undefined4 param_2,uint param_3)" (identifier "FUN_000247d0") (parameter_list "(int *param_1,undefined4 param_2,uint param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined1 *puVar2;\n  int iVar3;\n  int iVar4;\n  undefined4 *puVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int iVar9;\n  \n  uVar6 = param_1[2];\n  uVar7 = param_1[1];\n  if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }\n  return iVar9;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" (identifier "uVar6") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = param_1[1];" (assignment_expression "uVar7 = param_1[1]" (identifier "uVar7") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (uVar6 < uVar7) {\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }\n  else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" (if "if") (parenthesized_expression "(uVar6 < uVar7)" (( "(") (binary_expression "uVar6 < uVar7" (identifier "uVar6") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n    iVar9 = param_1[3];\n    iVar8 = param_1[5];\nLAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);\n    *puVar5 = param_2;\n    puVar5[1] = param_3 & 0xff003fff;\n    if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }\n    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;\n    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;\n    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);\n    *puVar2 = 0;\n    puVar2[1] = 0;\n    puVar2[2] = 0;\n    puVar2[3] = 0;\n    puVar2[4] = 0;\n    puVar2[5] = 0;\n    puVar2[6] = 0;\n    puVar2[7] = 0;\n    puVar2[8] = 0;\n    puVar2[9] = 0;\n    puVar2[10] = 0;\n    puVar2[0xb] = 0;\n    iVar9 = param_1[2];\n    param_1[2] = iVar9 + 1;\n  }" ({ "{") (expression_statement "iVar9 = param_1[3];" (assignment_expression "iVar9 = param_1[3]" (identifier "iVar9") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar8 = param_1[5];" (assignment_expression "iVar8 = param_1[5]" (identifier "iVar8") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (labeled_statement "LAB_00024828:\n    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" (statement_identifier "LAB_00024828") (: ":") (expression_statement "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);" (assignment_expression "puVar5 = (undefined4 *)(*param_1 + uVar6 * 8)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)(*param_1 + uVar6 * 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + uVar6 * 8)" (( "(") (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8"))) () ")")))) (; ";"))) (expression_statement "*puVar5 = param_2;" (assignment_expression "*puVar5 = param_2" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar5[1] = param_3 & 0xff003fff;" (assignment_expression "puVar5[1] = param_3 & 0xff003fff" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_3 & 0xff003fff" (identifier "param_3") (& "&") (number_literal "0xff003fff"))) (; ";")) (if_statement "if (param_3 >> 0x18 == 5) {\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }\n    else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" (if "if") (parenthesized_expression "(param_3 >> 0x18 == 5)" (( "(") (binary_expression "param_3 >> 0x18 == 5" (binary_expression "param_3 >> 0x18" (identifier "param_3") (>> ">>") (number_literal "0x18")) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      uVar7 = param_1[0x17] < 2 ^ 1;\n    }" ({ "{") (expression_statement "uVar7 = param_1[0x17] < 2 ^ 1;" (assignment_expression "uVar7 = param_1[0x17] < 2 ^ 1" (identifier "uVar7") (= "=") (binary_expression "param_1[0x17] < 2 ^ 1" (binary_expression "param_1[0x17] < 2" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (< "<") (number_literal "2")) (^ "^") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" (else "else") (compound_statement "{\n      uVar7 = (uint)(param_3 >> 0x18 == 6);\n    }" ({ "{") (expression_statement "uVar7 = (uint)(param_3 >> 0x18 == 6);" (assignment_expression "uVar7 = (uint)(param_3 >> 0x18 == 6)" (identifier "uVar7") (= "=") (call_expression "(uint)(param_3 >> 0x18 == 6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_3 >> 0x18 == 6)" (( "(") (binary_expression "param_3 >> 0x18 == 6" (binary_expression "param_3 >> 0x18" (identifier "param_3") (>> ">>") (number_literal "0x18")) (== "==") (number_literal "6")) () ")")))) (; ";")) (} "}")))) (expression_statement "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;" (assignment_expression "puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "puVar5[1] & 0xfffff7ff | uVar7 << 0xb" (binary_expression "puVar5[1] & 0xfffff7ff" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0xfffff7ff")) (| "|") (binary_expression "uVar7 << 0xb" (identifier "uVar7") (<< "<<") (number_literal "0xb")))) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff" (pointer_expression "*(undefined4 *)(iVar9 + uVar6 * 4)" (* "*") (cast_expression "(undefined4 *)(iVar9 + uVar6 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + uVar6 * 4)" (( "(") (binary_expression "iVar9 + uVar6 * 4" (identifier "iVar9") (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)(iVar8 + param_1[2] * 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + param_1[2] * 0xc)" (( "(") (binary_expression "iVar8 + param_1[2] * 0xc" (identifier "iVar8") (+ "+") (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);" (assignment_expression "puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc)" (identifier "puVar2") (= "=") (cast_expression "(undefined1 *)(param_1[6] + param_1[2] * 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + param_1[2] * 0xc)" (( "(") (binary_expression "param_1[6] + param_1[2] * 0xc" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (binary_expression "param_1[2] * 0xc" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "*puVar2 = 0;" (assignment_expression "*puVar2 = 0" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[1] = 0;" (assignment_expression "puVar2[1] = 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[2] = 0;" (assignment_expression "puVar2[2] = 0" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[3] = 0;" (assignment_expression "puVar2[3] = 0" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[4] = 0;" (assignment_expression "puVar2[4] = 0" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[5] = 0;" (assignment_expression "puVar2[5] = 0" (subscript_expression "puVar2[5]" (identifier "puVar2") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[6] = 0;" (assignment_expression "puVar2[6] = 0" (subscript_expression "puVar2[6]" (identifier "puVar2") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[7] = 0;" (assignment_expression "puVar2[7] = 0" (subscript_expression "puVar2[7]" (identifier "puVar2") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[8] = 0;" (assignment_expression "puVar2[8] = 0" (subscript_expression "puVar2[8]" (identifier "puVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[9] = 0;" (assignment_expression "puVar2[9] = 0" (subscript_expression "puVar2[9]" (identifier "puVar2") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[10] = 0;" (assignment_expression "puVar2[10] = 0" (subscript_expression "puVar2[10]" (identifier "puVar2") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar2[0xb] = 0;" (assignment_expression "puVar2[0xb] = 0" (subscript_expression "puVar2[0xb]" (identifier "puVar2") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar9 = param_1[2];" (assignment_expression "iVar9 = param_1[2]" (identifier "iVar9") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_1[2] = iVar9 + 1;" (assignment_expression "param_1[2] = iVar9 + 1" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" (else "else") (compound_statement "{\n    if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }\n    iVar9 = -1;\n  }" ({ "{") (if_statement "if ((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)) {\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" (if "if") (parenthesized_expression "((uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0))" (( "(") (binary_expression "(uVar7 * 2 < 0x15555556) &&\n       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" (parenthesized_expression "(uVar7 * 2 < 0x15555556)" (( "(") (binary_expression "uVar7 * 2 < 0x15555556" (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2")) (< "<") (number_literal "0x15555556")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0)" (( "(") (comma_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" (identifier "iVar9") (= "=") (call_expression "(*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" (( "(") (pointer_expression "*(code *)PTR_realloc_0004b3ec" (* "*") (cast_expression "(code *)PTR_realloc_0004b3ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_0004b3ec"))) () ")")) (argument_list "(*param_1,uVar7 << 4)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (binary_expression "uVar7 << 4" (identifier "uVar7") (<< "<<") (number_literal "4")) () ")")))) (, ",") (comma_expression "puVar1 = PTR_realloc_0004b3ec,\n       iVar9 != 0" (assignment_expression "puVar1 = PTR_realloc_0004b3ec" (identifier "puVar1") (= "=") (identifier "PTR_realloc_0004b3ec")) (, ",") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n      *param_1 = iVar9;\n      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);\n      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);\n      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);\n      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);\n      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }\n      (*(code *)PTR_free_0004b46c)(iVar9);\n      (*(code *)PTR_free_0004b46c)(iVar3);\n      (*(code *)PTR_free_0004b46c)(iVar8);\n      (*(code *)PTR_free_0004b46c)(iVar4);\n    }" ({ "{") (expression_statement "*param_1 = iVar9;" (assignment_expression "*param_1 = iVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);" (assignment_expression "iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3)" (identifier "iVar9") (= "=") (call_expression "(*(code *)puVar1)(param_1[3],uVar7 << 3)" (parenthesized_expression "(*(code *)puVar1)" (( "(") (pointer_expression "*(code *)puVar1" (* "*") (cast_expression "(code *)puVar1" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1"))) () ")")) (argument_list "(param_1[3],uVar7 << 3)" (( "(") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (, ",") (binary_expression "uVar7 << 3" (identifier "uVar7") (<< "<<") (number_literal "3")) () ")")))) (; ";")) (expression_statement "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);" (assignment_expression "iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" (( "(") (pointer_expression "*(code *)PTR_realloc_0004b3ec" (* "*") (cast_expression "(code *)PTR_realloc_0004b3ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_0004b3ec"))) () ")")) (argument_list "(param_1[4],uVar7 << 3)" (( "(") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "uVar7 << 3" (identifier "uVar7") (<< "<<") (number_literal "3")) () ")")))) (; ";")) (expression_statement "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);" (assignment_expression "iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" (identifier "iVar8") (= "=") (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" (( "(") (pointer_expression "*(code *)PTR_realloc_0004b3ec" (* "*") (cast_expression "(code *)PTR_realloc_0004b3ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_0004b3ec"))) () ")")) (argument_list "(param_1[5],uVar7 * 0x18)" (( "(") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (binary_expression "uVar7 * 0x18" (identifier "uVar7") (* "*") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);" (assignment_expression "iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18)" (parenthesized_expression "(*(code *)PTR_realloc_0004b3ec)" (( "(") (pointer_expression "*(code *)PTR_realloc_0004b3ec" (* "*") (cast_expression "(code *)PTR_realloc_0004b3ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_0004b3ec"))) () ")")) (argument_list "(param_1[6],uVar7 * 0x18)" (( "(") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (, ",") (binary_expression "uVar7 * 0x18" (identifier "uVar7") (* "*") (number_literal "0x18")) () ")")))) (; ";")) (if_statement "if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" (if "if") (parenthesized_expression "((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))))" (( "(") (binary_expression "(iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))" (( "(") (parenthesized_expression "((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0))" (( "(") (binary_expression "(iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)" (parenthesized_expression "(iVar3 != 0 && (iVar8 != 0))" (( "(") (binary_expression "iVar3 != 0 && (iVar8 != 0)" (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        uVar6 = param_1[2];\n        param_1[3] = iVar9;\n        param_1[4] = iVar3;\n        param_1[5] = iVar8;\n        param_1[6] = iVar4;\n        param_1[1] = uVar7 * 2;\n        goto LAB_00024828;\n      }" ({ "{") (expression_statement "uVar6 = param_1[2];" (assignment_expression "uVar6 = param_1[2]" (identifier "uVar6") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_1[3] = iVar9;" (assignment_expression "param_1[3] = iVar9" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "param_1[4] = iVar3;" (assignment_expression "param_1[4] = iVar3" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "param_1[5] = iVar8;" (assignment_expression "param_1[5] = iVar8" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "param_1[6] = iVar4;" (assignment_expression "param_1[6] = iVar4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "param_1[1] = uVar7 * 2;" (assignment_expression "param_1[1] = uVar7 * 2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_00024828;" (goto "goto") (statement_identifier "LAB_00024828") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar9);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar9)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" (( "(") (pointer_expression "*(code *)PTR_free_0004b46c" (* "*") (cast_expression "(code *)PTR_free_0004b46c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004b46c"))) () ")")) (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar3);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar3)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" (( "(") (pointer_expression "*(code *)PTR_free_0004b46c" (* "*") (cast_expression "(code *)PTR_free_0004b46c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004b46c"))) () ")")) (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar8);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar8)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" (( "(") (pointer_expression "*(code *)PTR_free_0004b46c" (* "*") (cast_expression "(code *)PTR_free_0004b46c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004b46c"))) () ")")) (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0004b46c)(iVar4);" (call_expression "(*(code *)PTR_free_0004b46c)(iVar4)" (parenthesized_expression "(*(code *)PTR_free_0004b46c)" (( "(") (pointer_expression "*(code *)PTR_free_0004b46c" (* "*") (cast_expression "(code *)PTR_free_0004b46c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0004b46c"))) () ")")) (argument_list "(iVar4)" (( "(") (identifier "iVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = -1;" (assignment_expression "iVar9 = -1" (identifier "iVar9") (= "=") (number_literal "-1")) (; ";")) (} "}")))) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}")))

type_1 function_1(type_2 *dfa,type_3 token)

{
  type_4 *puVar1;
  type_3 *var_5;
  type_1 *var_7;
  type_5 *var_8;
  size_t var_1;
  type_6 in_a1;
  type_7 var_3;
  type_7 var_2;
  type_5 *var_4;
  type_1 *var_6;
  
  var_1 = dfa->nodes_len;
  var_2 = dfa->nodes_alloc;
  if (var_1 < var_2) {
    var_6 = dfa->nexts;
    var_4 = dfa->edests;
LAB_00024828:
    var_5 = dfa->nodes + var_1;
    var_5->opr = in_a1;
    *(type_7 *)&var_5->field_0x4 = var_3 & 0xff003fff;
    if (var_3 >> 0x18 == 5) {
      var_2 = dfa->mb_cur_max < 2 ^ 1;
    }
    else {
      var_2 = (type_7)(var_3 >> 0x18 == 6);
    }
    *(type_7 *)&var_5->field_0x4 = *(type_7 *)&var_5->field_0x4 & 0xfffff7ff | var_2 << 0xb;
    var_6[var_1] = -1;
    var_4 = var_4 + dfa->nodes_len;
    *(type_8 *)&var_4->alloc = 0;
    *(type_8 *)((int)&var_4->alloc + 1) = 0;
    *(type_8 *)((int)&var_4->alloc + 2) = 0;
    *(type_8 *)((int)&var_4->alloc + 3) = 0;
    *(type_8 *)&var_4->nelem = 0;
    *(type_8 *)((int)&var_4->nelem + 1) = 0;
    *(type_8 *)((int)&var_4->nelem + 2) = 0;
    *(type_8 *)((int)&var_4->nelem + 3) = 0;
    *(type_8 *)&var_4->elems = 0;
    *(type_8 *)((int)&var_4->elems + 1) = 0;
    *(type_8 *)((int)&var_4->elems + 2) = 0;
    *(type_8 *)((int)&var_4->elems + 3) = 0;
    var_4 = dfa->eclosures + dfa->nodes_len;
    *(type_8 *)&var_4->alloc = 0;
    *(type_8 *)((int)&var_4->alloc + 1) = 0;
    *(type_8 *)((int)&var_4->alloc + 2) = 0;
    *(type_8 *)((int)&var_4->alloc + 3) = 0;
    *(type_8 *)&var_4->nelem = 0;
    *(type_8 *)((int)&var_4->nelem + 1) = 0;
    *(type_8 *)((int)&var_4->nelem + 2) = 0;
    *(type_8 *)((int)&var_4->nelem + 3) = 0;
    *(type_8 *)&var_4->elems = 0;
    *(type_8 *)((int)&var_4->elems + 1) = 0;
    *(type_8 *)((int)&var_4->elems + 2) = 0;
    *(type_8 *)((int)&var_4->elems + 3) = 0;
    var_1 = dfa->nodes_len;
    dfa->nodes_len = var_1 + 1;
  }
  else {
    if ((var_2 * 2 < 0x15555556) &&
       (var_5 = (type_3 *)(*(type_9 *)PTR_realloc_0004b3ec)(dfa->nodes,var_2 << 4),
       puVar1 = PTR_realloc_0004b3ec, var_5 != (type_3 *)0x0)) {
      dfa->nodes = var_5;
      var_6 = (type_1 *)(*(type_9 *)puVar1)(dfa->nexts,var_2 << 3);
      var_7 = (type_1 *)(*(type_9 *)PTR_realloc_0004b3ec)(dfa->org_indices,var_2 << 3);
      var_4 = (type_5 *)(*(type_9 *)PTR_realloc_0004b3ec)(dfa->edests,var_2 * 0x18);
      var_8 = (type_5 *)(*(type_9 *)PTR_realloc_0004b3ec)(dfa->eclosures,var_2 * 0x18);
      if ((var_6 != (type_1 *)0x0) &&
         (((var_7 != (type_1 *)0x0 && (var_4 != (type_5 *)0x0)) &&
          (var_8 != (type_5 *)0x0)))) {
        var_1 = dfa->nodes_len;
        dfa->nexts = var_6;
        dfa->org_indices = var_7;
        dfa->edests = var_4;
        dfa->eclosures = var_8;
        dfa->nodes_alloc = var_2 * 2;
        goto LAB_00024828;
      }
      (*(type_9 *)PTR_free_0004b46c)(var_6);
      (*(type_9 *)PTR_free_0004b46c)(var_7);
      (*(type_9 *)PTR_free_0004b46c)(var_4);
      (*(type_9 *)PTR_free_0004b46c)(var_8);
    }
    var_1 = 0xffffffff;
  }
  return var_1;
}


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

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

{
  undefined *puVar1;
  undefined1 *puVar2;
  int iVar3;
  int iVar4;
  undefined4 *puVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int iVar9;
  
  uVar6 = param_1[2];
  uVar7 = param_1[1];
  if (uVar6 < uVar7) {
    iVar9 = param_1[3];
    iVar8 = param_1[5];
LAB_00024828:
    puVar5 = (undefined4 *)(*param_1 + uVar6 * 8);
    *puVar5 = param_2;
    puVar5[1] = param_3 & 0xff003fff;
    if (param_3 >> 0x18 == 5) {
      uVar7 = param_1[0x17] < 2 ^ 1;
    }
    else {
      uVar7 = (uint)(param_3 >> 0x18 == 6);
    }
    puVar5[1] = puVar5[1] & 0xfffff7ff | uVar7 << 0xb;
    *(undefined4 *)(iVar9 + uVar6 * 4) = 0xffffffff;
    puVar2 = (undefined1 *)(iVar8 + param_1[2] * 0xc);
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    puVar2 = (undefined1 *)(param_1[6] + param_1[2] * 0xc);
    *puVar2 = 0;
    puVar2[1] = 0;
    puVar2[2] = 0;
    puVar2[3] = 0;
    puVar2[4] = 0;
    puVar2[5] = 0;
    puVar2[6] = 0;
    puVar2[7] = 0;
    puVar2[8] = 0;
    puVar2[9] = 0;
    puVar2[10] = 0;
    puVar2[0xb] = 0;
    iVar9 = param_1[2];
    param_1[2] = iVar9 + 1;
  }
  else {
    if ((uVar7 * 2 < 0x15555556) &&
       (iVar9 = (*(code *)PTR_realloc_0004b3ec)(*param_1,uVar7 << 4), puVar1 = PTR_realloc_0004b3ec,
       iVar9 != 0)) {
      *param_1 = iVar9;
      iVar9 = (*(code *)puVar1)(param_1[3],uVar7 << 3);
      iVar3 = (*(code *)PTR_realloc_0004b3ec)(param_1[4],uVar7 << 3);
      iVar8 = (*(code *)PTR_realloc_0004b3ec)(param_1[5],uVar7 * 0x18);
      iVar4 = (*(code *)PTR_realloc_0004b3ec)(param_1[6],uVar7 * 0x18);
      if ((iVar9 != 0) && (((iVar3 != 0 && (iVar8 != 0)) && (iVar4 != 0)))) {
        uVar6 = param_1[2];
        param_1[3] = iVar9;
        param_1[4] = iVar3;
        param_1[5] = iVar8;
        param_1[6] = iVar4;
        param_1[1] = uVar7 * 2;
        goto LAB_00024828;
      }
      (*(code *)PTR_free_0004b46c)(iVar9);
      (*(code *)PTR_free_0004b46c)(iVar3);
      (*(code *)PTR_free_0004b46c)(iVar8);
      (*(code *)PTR_free_0004b46c)(iVar4);
    }
    iVar9 = -1;
  }
  return iVar9;
}

