
void def_file_free(def_file *fdef)

{
  char *pcVar1;
  def_file_aligncomm *__ptr;
  def_file_section *pdVar2;
  def_file_export *pdVar3;
  def_file_import *pdVar4;
  char *pcVar5;
  def_file_section *__ptr_00;
  def_file_export *__ptr_01;
  def_file_import *__ptr_02;
  long lVar6;
  def_file_module *__ptr_03;
  
  if (fdef == (def_file *)0x0) {
    return;
  }
  if (fdef->name != (char *)0x0) {
    free(fdef->name);
  }
  if (fdef->description != (char *)0x0) {
    free(fdef->description);
  }
  __ptr_00 = fdef->section_defs;
  if (__ptr_00 != (def_file_section *)0x0) {
    if (0 < fdef->num_section_defs) {
      lVar6 = 0;
      do {
        pdVar2 = __ptr_00 + lVar6;
        if (pdVar2->name != (char *)0x0) {
          free(pdVar2->name);
          __ptr_00 = fdef->section_defs;
          pdVar2 = __ptr_00 + lVar6;
        }
        if (pdVar2->class != (char *)0x0) {
          free(pdVar2->class);
          __ptr_00 = fdef->section_defs;
        }
        lVar6 = lVar6 + 1;
      } while ((int)lVar6 < fdef->num_section_defs);
    }
    free(__ptr_00);
  }
  __ptr_01 = fdef->exports;
  if (__ptr_01 != (def_file_export *)0x0) {
    if (0 < fdef->num_exports) {
      lVar6 = 0;
      do {
        pdVar3 = __ptr_01 + lVar6;
        pcVar1 = pdVar3->internal_name;
        pcVar5 = pdVar3->name;
        if (pcVar1 == (char *)0x0) {
LAB_0014ac30:
          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;
        }
        else {
          if (pcVar1 != pcVar5) {
            free(pcVar1);
            __ptr_01 = fdef->exports;
            pdVar3 = __ptr_01 + lVar6;
            pcVar5 = pdVar3->name;
            goto LAB_0014ac30;
          }
LAB_0014ac6e:
          free(pcVar5);
          __ptr_01 = fdef->exports;
          pdVar3 = __ptr_01 + lVar6;
        }
        if (pdVar3->its_name != (char *)0x0) {
          free(pdVar3->its_name);
          __ptr_01 = fdef->exports;
        }
        lVar6 = lVar6 + 1;
      } while ((int)lVar6 < fdef->num_exports);
    }
    free(__ptr_01);
  }
  __ptr_02 = fdef->imports;
  if (__ptr_02 != (def_file_import *)0x0) {
    if (0 < fdef->num_imports) {
      lVar6 = 0;
      do {
        pdVar4 = __ptr_02 + lVar6;
        pcVar1 = pdVar4->internal_name;
        pcVar5 = pdVar4->name;
        if (pcVar1 == (char *)0x0) {
LAB_0014acb1:
          if (pcVar5 != (char *)0x0) goto LAB_0014acef;
        }
        else {
          if (pcVar1 != pcVar5) {
            free(pcVar1);
            __ptr_02 = fdef->imports;
            pdVar4 = __ptr_02 + lVar6;
            pcVar5 = pdVar4->name;
            goto LAB_0014acb1;
          }
LAB_0014acef:
          free(pcVar5);
          __ptr_02 = fdef->imports;
          pdVar4 = __ptr_02 + lVar6;
        }
        if (pdVar4->its_name != (char *)0x0) {
          free(pdVar4->its_name);
          __ptr_02 = fdef->imports;
        }
        lVar6 = lVar6 + 1;
      } while ((int)lVar6 < fdef->num_imports);
    }
    free(__ptr_02);
  }
  __ptr_03 = fdef->modules;
  if (__ptr_03 == (def_file_module *)0x0) goto LAB_0014ad59;
  do {
    fdef->modules = __ptr_03->next;
    free(__ptr_03);
    __ptr_03 = fdef->modules;
  } while (__ptr_03 != (def_file_module *)0x0);
  __ptr = fdef->aligncomms;
  while (__ptr != (def_file_aligncomm *)0x0) {
    pcVar1 = __ptr->symbol_name;
    fdef->aligncomms = __ptr->next;
    free(pcVar1);
    free(__ptr);
LAB_0014ad59:
    __ptr = fdef->aligncomms;
  }
  free(fdef);
  return;
}



void FUN_0014ab80(undefined8 *param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *pvVar4;
  long lVar5;
  long lVar6;
  
  if (param_1 == (undefined8 *)0x0) {
    return;
  }
  if ((void *)*param_1 != (void *)0x0) {
    free((void *)*param_1);
  }
  if ((void *)param_1[3] != (void *)0x0) {
    free((void *)param_1[3]);
  }
  pvVar4 = (void *)param_1[7];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 6)) {
      lVar5 = 0;
      do {
        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);
        if ((void *)*puVar2 != (void *)0x0) {
          free((void *)*puVar2);
          pvVar4 = (void *)param_1[7];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);
        }
        if ((void *)puVar2[1] != (void *)0x0) {
          free((void *)puVar2[1]);
          pvVar4 = (void *)param_1[7];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 6));
    }
    free(pvVar4);
  }
  pvVar4 = (void *)param_1[9];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 8)) {
      lVar5 = 0;
      do {
        lVar6 = lVar5 * 0x28;
        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        pvVar1 = (void *)puVar2[1];
        pvVar3 = (void *)*puVar2;
        if (pvVar1 == (void *)0x0) {
LAB_0014ac30:
          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;
        }
        else {
          if (pvVar1 != pvVar3) {
            free(pvVar1);
            pvVar4 = (void *)param_1[9];
            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
            pvVar3 = (void *)*puVar2;
            goto LAB_0014ac30;
          }
LAB_0014ac6e:
          free(pvVar3);
          pvVar4 = (void *)param_1[9];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        }
        if ((void *)puVar2[2] != (void *)0x0) {
          free((void *)puVar2[2]);
          pvVar4 = (void *)param_1[9];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 8));
    }
    free(pvVar4);
  }
  pvVar4 = (void *)param_1[0xc];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 0xb)) {
      lVar5 = 0;
      do {
        lVar6 = lVar5 * 0x28;
        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        pvVar1 = (void *)*puVar2;
        pvVar3 = (void *)puVar2[2];
        if (pvVar1 == (void *)0x0) {
LAB_0014acb1:
          if (pvVar3 != (void *)0x0) goto LAB_0014acef;
        }
        else {
          if (pvVar1 != pvVar3) {
            free(pvVar1);
            pvVar4 = (void *)param_1[0xc];
            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
            pvVar3 = (void *)puVar2[2];
            goto LAB_0014acb1;
          }
LAB_0014acef:
          free(pvVar3);
          pvVar4 = (void *)param_1[0xc];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        }
        if ((void *)puVar2[3] != (void *)0x0) {
          free((void *)puVar2[3]);
          pvVar4 = (void *)param_1[0xc];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 0xb));
    }
    free(pvVar4);
  }
  puVar2 = (undefined8 *)param_1[10];
  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;
  do {
    param_1[10] = *puVar2;
    free(puVar2);
    puVar2 = (undefined8 *)param_1[10];
  } while (puVar2 != (undefined8 *)0x0);
  puVar2 = (undefined8 *)param_1[0xe];
  while (puVar2 != (undefined8 *)0x0) {
    pvVar4 = (void *)puVar2[1];
    param_1[0xe] = *puVar2;
    free(pvVar4);
    free(puVar2);
LAB_0014ad59:
    puVar2 = (undefined8 *)param_1[0xe];
  }
  free(param_1);
  return;
}


TEST RDI,RDI
JZ 0x0014ad70
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
MOV RDI,qword ptr [RDI]
TEST RDI,RDI
JZ 0x0014ab9d
CALL 0x0010dd90
MOV RDI,qword ptr [RBX + 0x18]
TEST RDI,RDI
JZ 0x0014abab
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x38]
TEST RDX,RDX
JZ 0x0014ac05
MOV ESI,dword ptr [RBX + 0x30]
TEST ESI,ESI
JLE 0x0014abfd
XOR EBP,EBP
NOP dword ptr [RAX]
LEA R12,[RBP + RBP*0x2]
SHL R12,0x3
LEA RAX,[RDX + R12*0x1]
MOV RDI,qword ptr [RAX]
TEST RDI,RDI
JZ 0x0014abe2
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x38]
LEA RAX,[RDX + R12*0x1]
MOV RDI,qword ptr [RAX + 0x8]
TEST RDI,RDI
JZ 0x0014abf4
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x38]
ADD RBP,0x1
CMP dword ptr [RBX + 0x30],EBP
JG 0x0014abc0
MOV RDI,RDX
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x48]
TEST RDX,RDX
JZ 0x0014ac88
MOV ECX,dword ptr [RBX + 0x40]
TEST ECX,ECX
JLE 0x0014ac80
XOR EBP,EBP
JMP 0x0014ac50
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x48]
LEA RAX,[RDX + R12*0x1]
MOV RCX,qword ptr [RAX]
TEST RCX,RCX
JNZ 0x0014ac6e
MOV RDI,qword ptr [RAX + 0x10]
TEST RDI,RDI
JZ 0x0014ac47
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x48]
ADD RBP,0x1
CMP dword ptr [RBX + 0x40],EBP
JLE 0x0014ac80
LEA R12,[RBP + RBP*0x4]
SHL R12,0x3
LEA RAX,[RDX + R12*0x1]
MOV RDI,qword ptr [RAX + 0x8]
MOV RCX,qword ptr [RAX]
TEST RDI,RDI
JZ 0x0014ac30
CMP RDI,RCX
JNZ 0x0014ac20
MOV RDI,RCX
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x48]
LEA RAX,[RDX + R12*0x1]
JMP 0x0014ac35
MOV RDI,RDX
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x60]
TEST RDX,RDX
JZ 0x0014ad10
MOV EAX,dword ptr [RBX + 0x58]
TEST EAX,EAX
JLE 0x0014ad08
XOR EBP,EBP
JMP 0x0014acd1
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x60]
LEA RAX,[RDX + R12*0x1]
MOV RCX,qword ptr [RAX + 0x10]
TEST RCX,RCX
JNZ 0x0014acef
MOV RDI,qword ptr [RAX + 0x18]
TEST RDI,RDI
JZ 0x0014acc8
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x60]
ADD RBP,0x1
CMP dword ptr [RBX + 0x58],EBP
JLE 0x0014ad08
LEA R12,[RBP + RBP*0x4]
SHL R12,0x3
LEA RAX,[RDX + R12*0x1]
MOV RDI,qword ptr [RAX]
MOV RCX,qword ptr [RAX + 0x10]
TEST RDI,RDI
JZ 0x0014acb1
CMP RDI,RCX
JNZ 0x0014aca0
MOV RDI,RCX
CALL 0x0010dd90
MOV RDX,qword ptr [RBX + 0x60]
LEA RAX,[RDX + R12*0x1]
JMP 0x0014acb6
MOV RDI,RDX
CALL 0x0010dd90
MOV RDI,qword ptr [RBX + 0x50]
TEST RDI,RDI
JZ 0x0014ad59
NOP dword ptr [RAX]
MOV RAX,qword ptr [RDI]
MOV qword ptr [RBX + 0x50],RAX
CALL 0x0010dd90
MOV RDI,qword ptr [RBX + 0x50]
TEST RDI,RDI
JNZ 0x0014ad20
MOV RBP,qword ptr [RBX + 0x70]
TEST RBP,RBP
JZ 0x0014ad62
NOP
MOV RAX,qword ptr [RBP]
MOV RDI,qword ptr [RBP + 0x8]
MOV qword ptr [RBX + 0x70],RAX
CALL 0x0010dd90
MOV RDI,RBP
CALL 0x0010dd90
MOV RBP,qword ptr [RBX + 0x70]
TEST RBP,RBP
JNZ 0x0014ad40
MOV RDI,RBX
POP RBX
POP RBP
POP R12
JMP 0x0010dd90
RET
(translation_unit "void FUN_0014ab80(undefined8 *param_1)\n\n{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0014ab80(undefined8 *param_1)\n\n{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0014ab80(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }" if (parenthesized_expression "((void *)*param_1 != (void *)0x0)" ( (binary_expression "(void *)*param_1 != (void *)0x0" (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free((void *)*param_1);\n  }" { (expression_statement "free((void *)*param_1);" (call_expression "free((void *)*param_1)" identifier (argument_list "((void *)*param_1)" ( (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;) })) (if_statement "if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }" if (parenthesized_expression "((void *)param_1[3] != (void *)0x0)" ( (binary_expression "(void *)param_1[3] != (void *)0x0" (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free((void *)param_1[3]);\n  }" { (expression_statement "free((void *)param_1[3]);" (call_expression "free((void *)param_1[3])" identifier (argument_list "((void *)param_1[3])" ( (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 6))" ( (binary_expression "0 < *(int *)(param_1 + 6)" number_literal < (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));" do (compound_statement "{\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" ( (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar5 * 0x18" identifier * number_literal)) )))) ;) (if_statement "if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" if (parenthesized_expression "((void *)*puVar2 != (void *)0x0)" ( (binary_expression "(void *)*puVar2 != (void *)0x0" (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" { (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" identifier (argument_list "((void *)*puVar2)" ( (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" ( (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar5 * 0x18" identifier * number_literal)) )))) ;) })) (if_statement "if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" if (parenthesized_expression "((void *)puVar2[1] != (void *)0x0)" ( (binary_expression "(void *)puVar2[1] != (void *)0x0" (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" { (expression_statement "free((void *)puVar2[1]);" (call_expression "free((void *)puVar2[1])" identifier (argument_list "((void *)puVar2[1])" ( (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 6))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 6)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 8))" ( (binary_expression "0 < *(int *)(param_1 + 8)" number_literal < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));" do (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" identifier = (binary_expression "lVar5 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar1 = (void *)puVar2[1];" (assignment_expression "pvVar1 = (void *)puVar2[1]" identifier = (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }" { (labeled_statement "LAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" statement_identifier : (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" if (parenthesized_expression "(pvVar3 != (void *)0x0)" ( (binary_expression "pvVar3 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ac6e;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" else (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" { (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" if (parenthesized_expression "(pvVar1 != pvVar3)" ( (binary_expression "pvVar1 != pvVar3" identifier != identifier) )) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" { (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" identifier (argument_list "(pvVar1)" ( identifier ))) ;) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (goto_statement "goto LAB_0014ac30;" goto statement_identifier ;) })) (labeled_statement "LAB_0014ac6e:\n          free(pvVar3);" statement_identifier : (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" identifier (argument_list "(pvVar3)" ( identifier ))) ;)) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) }))) (if_statement "if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" if (parenthesized_expression "((void *)puVar2[2] != (void *)0x0)" ( (binary_expression "(void *)puVar2[2] != (void *)0x0" (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" { (expression_statement "free((void *)puVar2[2]);" (call_expression "free((void *)puVar2[2])" identifier (argument_list "((void *)puVar2[2])" ( (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 8))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 8)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0xb))" ( (binary_expression "0 < *(int *)(param_1 + 0xb)" number_literal < (pointer_expression "*(int *)(param_1 + 0xb)" * (cast_expression "(int *)(param_1 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));" do (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" identifier = (binary_expression "lVar5 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar1 = (void *)*puVar2;" (assignment_expression "pvVar1 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" identifier = (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }" { (labeled_statement "LAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;" statement_identifier : (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014acef;" if (parenthesized_expression "(pvVar3 != (void *)0x0)" ( (binary_expression "pvVar3 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014acef;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" else (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" { (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" if (parenthesized_expression "(pvVar1 != pvVar3)" ( (binary_expression "pvVar1 != pvVar3" identifier != identifier) )) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" { (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" identifier (argument_list "(pvVar1)" ( identifier ))) ;) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" identifier = (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0014acb1;" goto statement_identifier ;) })) (labeled_statement "LAB_0014acef:\n          free(pvVar3);" statement_identifier : (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" identifier (argument_list "(pvVar3)" ( identifier ))) ;)) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) }))) (if_statement "if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" if (parenthesized_expression "((void *)puVar2[3] != (void *)0x0)" ( (binary_expression "(void *)puVar2[3] != (void *)0x0" (cast_expression "(void *)puVar2[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" { (expression_statement "free((void *)puVar2[3]);" (call_expression "free((void *)puVar2[3])" identifier (argument_list "((void *)puVar2[3])" ( (cast_expression "(void *)puVar2[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 0xb))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 0xb)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 0xb)" * (cast_expression "(int *)(param_1 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ad59;" goto statement_identifier ;)) (do_statement "do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);" do (compound_statement "{\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  }" { (expression_statement "param_1[10] = *puVar2;" (assignment_expression "param_1[10] = *puVar2" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (while_statement "while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" while (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" { (expression_statement "pvVar4 = (void *)puVar2[1];" (assignment_expression "pvVar4 = (void *)puVar2[1]" identifier = (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0xe] = *puVar2;" (assignment_expression "param_1[0xe] = *puVar2" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (labeled_statement "LAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];" statement_identifier : (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;)) })) (expression_statement "free(param_1);" (call_expression "free(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void def_file_free(def_file *fdef)\n\n{\n  char *pcVar1;\n  def_file_aligncomm *__ptr;\n  def_file_section *pdVar2;\n  def_file_export *pdVar3;\n  def_file_import *pdVar4;\n  char *pcVar5;\n  def_file_section *__ptr_00;\n  def_file_export *__ptr_01;\n  def_file_import *__ptr_02;\n  long lVar6;\n  def_file_module *__ptr_03;\n  \n  if (fdef == (def_file *)0x0) {\n    return;\n  }\n  if (fdef->name != (char *)0x0) {\n    free(fdef->name);\n  }\n  if (fdef->description != (char *)0x0) {\n    free(fdef->description);\n  }\n  __ptr_00 = fdef->section_defs;\n  if (__ptr_00 != (def_file_section *)0x0) {\n    if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }\n    free(__ptr_00);\n  }\n  __ptr_01 = fdef->exports;\n  if (__ptr_01 != (def_file_export *)0x0) {\n    if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }\n    free(__ptr_01);\n  }\n  __ptr_02 = fdef->imports;\n  if (__ptr_02 != (def_file_import *)0x0) {\n    if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }\n    free(__ptr_02);\n  }\n  __ptr_03 = fdef->modules;\n  if (__ptr_03 == (def_file_module *)0x0) goto LAB_0014ad59;\n  do {\n    fdef->modules = __ptr_03->next;\n    free(__ptr_03);\n    __ptr_03 = fdef->modules;\n  } while (__ptr_03 != (def_file_module *)0x0);\n  __ptr = fdef->aligncomms;\n  while (__ptr != (def_file_aligncomm *)0x0) {\n    pcVar1 = __ptr->symbol_name;\n    fdef->aligncomms = __ptr->next;\n    free(pcVar1);\n    free(__ptr);\nLAB_0014ad59:\n    __ptr = fdef->aligncomms;\n  }\n  free(fdef);\n  return;\n}\n\n" (function_definition "void def_file_free(def_file *fdef)\n\n{\n  char *pcVar1;\n  def_file_aligncomm *__ptr;\n  def_file_section *pdVar2;\n  def_file_export *pdVar3;\n  def_file_import *pdVar4;\n  char *pcVar5;\n  def_file_section *__ptr_00;\n  def_file_export *__ptr_01;\n  def_file_import *__ptr_02;\n  long lVar6;\n  def_file_module *__ptr_03;\n  \n  if (fdef == (def_file *)0x0) {\n    return;\n  }\n  if (fdef->name != (char *)0x0) {\n    free(fdef->name);\n  }\n  if (fdef->description != (char *)0x0) {\n    free(fdef->description);\n  }\n  __ptr_00 = fdef->section_defs;\n  if (__ptr_00 != (def_file_section *)0x0) {\n    if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }\n    free(__ptr_00);\n  }\n  __ptr_01 = fdef->exports;\n  if (__ptr_01 != (def_file_export *)0x0) {\n    if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }\n    free(__ptr_01);\n  }\n  __ptr_02 = fdef->imports;\n  if (__ptr_02 != (def_file_import *)0x0) {\n    if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }\n    free(__ptr_02);\n  }\n  __ptr_03 = fdef->modules;\n  if (__ptr_03 == (def_file_module *)0x0) goto LAB_0014ad59;\n  do {\n    fdef->modules = __ptr_03->next;\n    free(__ptr_03);\n    __ptr_03 = fdef->modules;\n  } while (__ptr_03 != (def_file_module *)0x0);\n  __ptr = fdef->aligncomms;\n  while (__ptr != (def_file_aligncomm *)0x0) {\n    pcVar1 = __ptr->symbol_name;\n    fdef->aligncomms = __ptr->next;\n    free(pcVar1);\n    free(__ptr);\nLAB_0014ad59:\n    __ptr = fdef->aligncomms;\n  }\n  free(fdef);\n  return;\n}" primitive_type (function_declarator "def_file_free(def_file *fdef)" identifier (parameter_list "(def_file *fdef)" ( (parameter_declaration "def_file *fdef" type_identifier (pointer_declarator "*fdef" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  def_file_aligncomm *__ptr;\n  def_file_section *pdVar2;\n  def_file_export *pdVar3;\n  def_file_import *pdVar4;\n  char *pcVar5;\n  def_file_section *__ptr_00;\n  def_file_export *__ptr_01;\n  def_file_import *__ptr_02;\n  long lVar6;\n  def_file_module *__ptr_03;\n  \n  if (fdef == (def_file *)0x0) {\n    return;\n  }\n  if (fdef->name != (char *)0x0) {\n    free(fdef->name);\n  }\n  if (fdef->description != (char *)0x0) {\n    free(fdef->description);\n  }\n  __ptr_00 = fdef->section_defs;\n  if (__ptr_00 != (def_file_section *)0x0) {\n    if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }\n    free(__ptr_00);\n  }\n  __ptr_01 = fdef->exports;\n  if (__ptr_01 != (def_file_export *)0x0) {\n    if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }\n    free(__ptr_01);\n  }\n  __ptr_02 = fdef->imports;\n  if (__ptr_02 != (def_file_import *)0x0) {\n    if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }\n    free(__ptr_02);\n  }\n  __ptr_03 = fdef->modules;\n  if (__ptr_03 == (def_file_module *)0x0) goto LAB_0014ad59;\n  do {\n    fdef->modules = __ptr_03->next;\n    free(__ptr_03);\n    __ptr_03 = fdef->modules;\n  } while (__ptr_03 != (def_file_module *)0x0);\n  __ptr = fdef->aligncomms;\n  while (__ptr != (def_file_aligncomm *)0x0) {\n    pcVar1 = __ptr->symbol_name;\n    fdef->aligncomms = __ptr->next;\n    free(pcVar1);\n    free(__ptr);\nLAB_0014ad59:\n    __ptr = fdef->aligncomms;\n  }\n  free(fdef);\n  return;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "def_file_aligncomm *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "def_file_section *pdVar2;" type_identifier (pointer_declarator "*pdVar2" * identifier) ;) (declaration "def_file_export *pdVar3;" type_identifier (pointer_declarator "*pdVar3" * identifier) ;) (declaration "def_file_import *pdVar4;" type_identifier (pointer_declarator "*pdVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "def_file_section *__ptr_00;" type_identifier (pointer_declarator "*__ptr_00" * identifier) ;) (declaration "def_file_export *__ptr_01;" type_identifier (pointer_declarator "*__ptr_01" * identifier) ;) (declaration "def_file_import *__ptr_02;" type_identifier (pointer_declarator "*__ptr_02" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "def_file_module *__ptr_03;" type_identifier (pointer_declarator "*__ptr_03" * identifier) ;) (if_statement "if (fdef == (def_file *)0x0) {\n    return;\n  }" if (parenthesized_expression "(fdef == (def_file *)0x0)" ( (binary_expression "fdef == (def_file *)0x0" identifier == (cast_expression "(def_file *)0x0" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (fdef->name != (char *)0x0) {\n    free(fdef->name);\n  }" if (parenthesized_expression "(fdef->name != (char *)0x0)" ( (binary_expression "fdef->name != (char *)0x0" (field_expression "fdef->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(fdef->name);\n  }" { (expression_statement "free(fdef->name);" (call_expression "free(fdef->name)" identifier (argument_list "(fdef->name)" ( (field_expression "fdef->name" identifier -> field_identifier) ))) ;) })) (if_statement "if (fdef->description != (char *)0x0) {\n    free(fdef->description);\n  }" if (parenthesized_expression "(fdef->description != (char *)0x0)" ( (binary_expression "fdef->description != (char *)0x0" (field_expression "fdef->description" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(fdef->description);\n  }" { (expression_statement "free(fdef->description);" (call_expression "free(fdef->description)" identifier (argument_list "(fdef->description)" ( (field_expression "fdef->description" identifier -> field_identifier) ))) ;) })) (expression_statement "__ptr_00 = fdef->section_defs;" (assignment_expression "__ptr_00 = fdef->section_defs" identifier = (field_expression "fdef->section_defs" identifier -> field_identifier)) ;) (if_statement "if (__ptr_00 != (def_file_section *)0x0) {\n    if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }\n    free(__ptr_00);\n  }" if (parenthesized_expression "(__ptr_00 != (def_file_section *)0x0)" ( (binary_expression "__ptr_00 != (def_file_section *)0x0" identifier != (cast_expression "(def_file_section *)0x0" ( (type_descriptor "def_file_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }\n    free(__ptr_00);\n  }" { (if_statement "if (0 < fdef->num_section_defs) {\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }" if (parenthesized_expression "(0 < fdef->num_section_defs)" ( (binary_expression "0 < fdef->num_section_defs" number_literal < (field_expression "fdef->num_section_defs" identifier -> field_identifier)) )) (compound_statement "{\n      lVar6 = 0;\n      do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);\n    }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_section_defs);" do (compound_statement "{\n        pdVar2 = __ptr_00 + lVar6;\n        if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }\n        if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }\n        lVar6 = lVar6 + 1;\n      }" { (expression_statement "pdVar2 = __ptr_00 + lVar6;" (assignment_expression "pdVar2 = __ptr_00 + lVar6" identifier = (binary_expression "__ptr_00 + lVar6" identifier + identifier)) ;) (if_statement "if (pdVar2->name != (char *)0x0) {\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }" if (parenthesized_expression "(pdVar2->name != (char *)0x0)" ( (binary_expression "pdVar2->name != (char *)0x0" (field_expression "pdVar2->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free(pdVar2->name);\n          __ptr_00 = fdef->section_defs;\n          pdVar2 = __ptr_00 + lVar6;\n        }" { (expression_statement "free(pdVar2->name);" (call_expression "free(pdVar2->name)" identifier (argument_list "(pdVar2->name)" ( (field_expression "pdVar2->name" identifier -> field_identifier) ))) ;) (expression_statement "__ptr_00 = fdef->section_defs;" (assignment_expression "__ptr_00 = fdef->section_defs" identifier = (field_expression "fdef->section_defs" identifier -> field_identifier)) ;) (expression_statement "pdVar2 = __ptr_00 + lVar6;" (assignment_expression "pdVar2 = __ptr_00 + lVar6" identifier = (binary_expression "__ptr_00 + lVar6" identifier + identifier)) ;) })) (if_statement "if (pdVar2->class != (char *)0x0) {\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }" if (parenthesized_expression "(pdVar2->class != (char *)0x0)" ( (binary_expression "pdVar2->class != (char *)0x0" (field_expression "pdVar2->class" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free(pdVar2->class);\n          __ptr_00 = fdef->section_defs;\n        }" { (expression_statement "free(pdVar2->class);" (call_expression "free(pdVar2->class)" identifier (argument_list "(pdVar2->class)" ( (field_expression "pdVar2->class" identifier -> field_identifier) ))) ;) (expression_statement "__ptr_00 = fdef->section_defs;" (assignment_expression "__ptr_00 = fdef->section_defs" identifier = (field_expression "fdef->section_defs" identifier -> field_identifier)) ;) })) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar6 < fdef->num_section_defs)" ( (binary_expression "(int)lVar6 < fdef->num_section_defs" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "fdef->num_section_defs" identifier -> field_identifier)) )) ;) })) (expression_statement "free(__ptr_00);" (call_expression "free(__ptr_00)" identifier (argument_list "(__ptr_00)" ( identifier ))) ;) })) (expression_statement "__ptr_01 = fdef->exports;" (assignment_expression "__ptr_01 = fdef->exports" identifier = (field_expression "fdef->exports" identifier -> field_identifier)) ;) (if_statement "if (__ptr_01 != (def_file_export *)0x0) {\n    if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }\n    free(__ptr_01);\n  }" if (parenthesized_expression "(__ptr_01 != (def_file_export *)0x0)" ( (binary_expression "__ptr_01 != (def_file_export *)0x0" identifier != (cast_expression "(def_file_export *)0x0" ( (type_descriptor "def_file_export *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }\n    free(__ptr_01);\n  }" { (if_statement "if (0 < fdef->num_exports) {\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }" if (parenthesized_expression "(0 < fdef->num_exports)" ( (binary_expression "0 < fdef->num_exports" number_literal < (field_expression "fdef->num_exports" identifier -> field_identifier)) )) (compound_statement "{\n      lVar6 = 0;\n      do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);\n    }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_exports);" do (compound_statement "{\n        pdVar3 = __ptr_01 + lVar6;\n        pcVar1 = pdVar3->internal_name;\n        pcVar5 = pdVar3->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }\n        if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }\n        lVar6 = lVar6 + 1;\n      }" { (expression_statement "pdVar3 = __ptr_01 + lVar6;" (assignment_expression "pdVar3 = __ptr_01 + lVar6" identifier = (binary_expression "__ptr_01 + lVar6" identifier + identifier)) ;) (expression_statement "pcVar1 = pdVar3->internal_name;" (assignment_expression "pcVar1 = pdVar3->internal_name" identifier = (field_expression "pdVar3->internal_name" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = pdVar3->name;" (assignment_expression "pcVar5 = pdVar3->name" identifier = (field_expression "pdVar3->name" identifier -> field_identifier)) ;) (if_statement "if (pcVar1 == (char *)0x0) {\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;\n        }" { (labeled_statement "LAB_0014ac30:\n          if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;" statement_identifier : (if_statement "if (pcVar5 != (char *)0x0) goto LAB_0014ac6e;" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ac6e;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }" else (compound_statement "{\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pcVar5);\n          __ptr_01 = fdef->exports;\n          pdVar3 = __ptr_01 + lVar6;\n        }" { (if_statement "if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }" if (parenthesized_expression "(pcVar1 != pcVar5)" ( (binary_expression "pcVar1 != pcVar5" identifier != identifier) )) (compound_statement "{\n            free(pcVar1);\n            __ptr_01 = fdef->exports;\n            pdVar3 = __ptr_01 + lVar6;\n            pcVar5 = pdVar3->name;\n            goto LAB_0014ac30;\n          }" { (expression_statement "free(pcVar1);" (call_expression "free(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;) (expression_statement "__ptr_01 = fdef->exports;" (assignment_expression "__ptr_01 = fdef->exports" identifier = (field_expression "fdef->exports" identifier -> field_identifier)) ;) (expression_statement "pdVar3 = __ptr_01 + lVar6;" (assignment_expression "pdVar3 = __ptr_01 + lVar6" identifier = (binary_expression "__ptr_01 + lVar6" identifier + identifier)) ;) (expression_statement "pcVar5 = pdVar3->name;" (assignment_expression "pcVar5 = pdVar3->name" identifier = (field_expression "pdVar3->name" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0014ac30;" goto statement_identifier ;) })) (labeled_statement "LAB_0014ac6e:\n          free(pcVar5);" statement_identifier : (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;)) (expression_statement "__ptr_01 = fdef->exports;" (assignment_expression "__ptr_01 = fdef->exports" identifier = (field_expression "fdef->exports" identifier -> field_identifier)) ;) (expression_statement "pdVar3 = __ptr_01 + lVar6;" (assignment_expression "pdVar3 = __ptr_01 + lVar6" identifier = (binary_expression "__ptr_01 + lVar6" identifier + identifier)) ;) }))) (if_statement "if (pdVar3->its_name != (char *)0x0) {\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }" if (parenthesized_expression "(pdVar3->its_name != (char *)0x0)" ( (binary_expression "pdVar3->its_name != (char *)0x0" (field_expression "pdVar3->its_name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free(pdVar3->its_name);\n          __ptr_01 = fdef->exports;\n        }" { (expression_statement "free(pdVar3->its_name);" (call_expression "free(pdVar3->its_name)" identifier (argument_list "(pdVar3->its_name)" ( (field_expression "pdVar3->its_name" identifier -> field_identifier) ))) ;) (expression_statement "__ptr_01 = fdef->exports;" (assignment_expression "__ptr_01 = fdef->exports" identifier = (field_expression "fdef->exports" identifier -> field_identifier)) ;) })) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar6 < fdef->num_exports)" ( (binary_expression "(int)lVar6 < fdef->num_exports" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "fdef->num_exports" identifier -> field_identifier)) )) ;) })) (expression_statement "free(__ptr_01);" (call_expression "free(__ptr_01)" identifier (argument_list "(__ptr_01)" ( identifier ))) ;) })) (expression_statement "__ptr_02 = fdef->imports;" (assignment_expression "__ptr_02 = fdef->imports" identifier = (field_expression "fdef->imports" identifier -> field_identifier)) ;) (if_statement "if (__ptr_02 != (def_file_import *)0x0) {\n    if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }\n    free(__ptr_02);\n  }" if (parenthesized_expression "(__ptr_02 != (def_file_import *)0x0)" ( (binary_expression "__ptr_02 != (def_file_import *)0x0" identifier != (cast_expression "(def_file_import *)0x0" ( (type_descriptor "def_file_import *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }\n    free(__ptr_02);\n  }" { (if_statement "if (0 < fdef->num_imports) {\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }" if (parenthesized_expression "(0 < fdef->num_imports)" ( (binary_expression "0 < fdef->num_imports" number_literal < (field_expression "fdef->num_imports" identifier -> field_identifier)) )) (compound_statement "{\n      lVar6 = 0;\n      do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);\n    }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      } while ((int)lVar6 < fdef->num_imports);" do (compound_statement "{\n        pdVar4 = __ptr_02 + lVar6;\n        pcVar1 = pdVar4->internal_name;\n        pcVar5 = pdVar4->name;\n        if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }\n        if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }\n        lVar6 = lVar6 + 1;\n      }" { (expression_statement "pdVar4 = __ptr_02 + lVar6;" (assignment_expression "pdVar4 = __ptr_02 + lVar6" identifier = (binary_expression "__ptr_02 + lVar6" identifier + identifier)) ;) (expression_statement "pcVar1 = pdVar4->internal_name;" (assignment_expression "pcVar1 = pdVar4->internal_name" identifier = (field_expression "pdVar4->internal_name" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = pdVar4->name;" (assignment_expression "pcVar5 = pdVar4->name" identifier = (field_expression "pdVar4->name" identifier -> field_identifier)) ;) (if_statement "if (pcVar1 == (char *)0x0) {\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }" if (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;\n        }" { (labeled_statement "LAB_0014acb1:\n          if (pcVar5 != (char *)0x0) goto LAB_0014acef;" statement_identifier : (if_statement "if (pcVar5 != (char *)0x0) goto LAB_0014acef;" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014acef;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }" else (compound_statement "{\n          if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pcVar5);\n          __ptr_02 = fdef->imports;\n          pdVar4 = __ptr_02 + lVar6;\n        }" { (if_statement "if (pcVar1 != pcVar5) {\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }" if (parenthesized_expression "(pcVar1 != pcVar5)" ( (binary_expression "pcVar1 != pcVar5" identifier != identifier) )) (compound_statement "{\n            free(pcVar1);\n            __ptr_02 = fdef->imports;\n            pdVar4 = __ptr_02 + lVar6;\n            pcVar5 = pdVar4->name;\n            goto LAB_0014acb1;\n          }" { (expression_statement "free(pcVar1);" (call_expression "free(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;) (expression_statement "__ptr_02 = fdef->imports;" (assignment_expression "__ptr_02 = fdef->imports" identifier = (field_expression "fdef->imports" identifier -> field_identifier)) ;) (expression_statement "pdVar4 = __ptr_02 + lVar6;" (assignment_expression "pdVar4 = __ptr_02 + lVar6" identifier = (binary_expression "__ptr_02 + lVar6" identifier + identifier)) ;) (expression_statement "pcVar5 = pdVar4->name;" (assignment_expression "pcVar5 = pdVar4->name" identifier = (field_expression "pdVar4->name" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0014acb1;" goto statement_identifier ;) })) (labeled_statement "LAB_0014acef:\n          free(pcVar5);" statement_identifier : (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;)) (expression_statement "__ptr_02 = fdef->imports;" (assignment_expression "__ptr_02 = fdef->imports" identifier = (field_expression "fdef->imports" identifier -> field_identifier)) ;) (expression_statement "pdVar4 = __ptr_02 + lVar6;" (assignment_expression "pdVar4 = __ptr_02 + lVar6" identifier = (binary_expression "__ptr_02 + lVar6" identifier + identifier)) ;) }))) (if_statement "if (pdVar4->its_name != (char *)0x0) {\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }" if (parenthesized_expression "(pdVar4->its_name != (char *)0x0)" ( (binary_expression "pdVar4->its_name != (char *)0x0" (field_expression "pdVar4->its_name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free(pdVar4->its_name);\n          __ptr_02 = fdef->imports;\n        }" { (expression_statement "free(pdVar4->its_name);" (call_expression "free(pdVar4->its_name)" identifier (argument_list "(pdVar4->its_name)" ( (field_expression "pdVar4->its_name" identifier -> field_identifier) ))) ;) (expression_statement "__ptr_02 = fdef->imports;" (assignment_expression "__ptr_02 = fdef->imports" identifier = (field_expression "fdef->imports" identifier -> field_identifier)) ;) })) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar6 < fdef->num_imports)" ( (binary_expression "(int)lVar6 < fdef->num_imports" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "fdef->num_imports" identifier -> field_identifier)) )) ;) })) (expression_statement "free(__ptr_02);" (call_expression "free(__ptr_02)" identifier (argument_list "(__ptr_02)" ( identifier ))) ;) })) (expression_statement "__ptr_03 = fdef->modules;" (assignment_expression "__ptr_03 = fdef->modules" identifier = (field_expression "fdef->modules" identifier -> field_identifier)) ;) (if_statement "if (__ptr_03 == (def_file_module *)0x0) goto LAB_0014ad59;" if (parenthesized_expression "(__ptr_03 == (def_file_module *)0x0)" ( (binary_expression "__ptr_03 == (def_file_module *)0x0" identifier == (cast_expression "(def_file_module *)0x0" ( (type_descriptor "def_file_module *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ad59;" goto statement_identifier ;)) (do_statement "do {\n    fdef->modules = __ptr_03->next;\n    free(__ptr_03);\n    __ptr_03 = fdef->modules;\n  } while (__ptr_03 != (def_file_module *)0x0);" do (compound_statement "{\n    fdef->modules = __ptr_03->next;\n    free(__ptr_03);\n    __ptr_03 = fdef->modules;\n  }" { (expression_statement "fdef->modules = __ptr_03->next;" (assignment_expression "fdef->modules = __ptr_03->next" (field_expression "fdef->modules" identifier -> field_identifier) = (field_expression "__ptr_03->next" identifier -> field_identifier)) ;) (expression_statement "free(__ptr_03);" (call_expression "free(__ptr_03)" identifier (argument_list "(__ptr_03)" ( identifier ))) ;) (expression_statement "__ptr_03 = fdef->modules;" (assignment_expression "__ptr_03 = fdef->modules" identifier = (field_expression "fdef->modules" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(__ptr_03 != (def_file_module *)0x0)" ( (binary_expression "__ptr_03 != (def_file_module *)0x0" identifier != (cast_expression "(def_file_module *)0x0" ( (type_descriptor "def_file_module *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "__ptr = fdef->aligncomms;" (assignment_expression "__ptr = fdef->aligncomms" identifier = (field_expression "fdef->aligncomms" identifier -> field_identifier)) ;) (while_statement "while (__ptr != (def_file_aligncomm *)0x0) {\n    pcVar1 = __ptr->symbol_name;\n    fdef->aligncomms = __ptr->next;\n    free(pcVar1);\n    free(__ptr);\nLAB_0014ad59:\n    __ptr = fdef->aligncomms;\n  }" while (parenthesized_expression "(__ptr != (def_file_aligncomm *)0x0)" ( (binary_expression "__ptr != (def_file_aligncomm *)0x0" identifier != (cast_expression "(def_file_aligncomm *)0x0" ( (type_descriptor "def_file_aligncomm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar1 = __ptr->symbol_name;\n    fdef->aligncomms = __ptr->next;\n    free(pcVar1);\n    free(__ptr);\nLAB_0014ad59:\n    __ptr = fdef->aligncomms;\n  }" { (expression_statement "pcVar1 = __ptr->symbol_name;" (assignment_expression "pcVar1 = __ptr->symbol_name" identifier = (field_expression "__ptr->symbol_name" identifier -> field_identifier)) ;) (expression_statement "fdef->aligncomms = __ptr->next;" (assignment_expression "fdef->aligncomms = __ptr->next" (field_expression "fdef->aligncomms" identifier -> field_identifier) = (field_expression "__ptr->next" identifier -> field_identifier)) ;) (expression_statement "free(pcVar1);" (call_expression "free(pcVar1)" identifier (argument_list "(pcVar1)" ( identifier ))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (labeled_statement "LAB_0014ad59:\n    __ptr = fdef->aligncomms;" statement_identifier : (expression_statement "__ptr = fdef->aligncomms;" (assignment_expression "__ptr = fdef->aligncomms" identifier = (field_expression "fdef->aligncomms" identifier -> field_identifier)) ;)) })) (expression_statement "free(fdef);" (call_expression "free(fdef)" identifier (argument_list "(fdef)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0014ab80(undefined8 *param_1)\n\n{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}\n\n" (function_definition "void FUN_0014ab80(undefined8 *param_1)\n\n{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" primitive_type (function_declarator "FUN_0014ab80(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" { (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "void *pvVar3;" primitive_type (pointer_declarator "*pvVar3" * identifier) ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }" if (parenthesized_expression "((void *)*param_1 != (void *)0x0)" ( (binary_expression "(void *)*param_1 != (void *)0x0" (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free((void *)*param_1);\n  }" { (expression_statement "free((void *)*param_1);" (call_expression "free((void *)*param_1)" identifier (argument_list "((void *)*param_1)" ( (cast_expression "(void *)*param_1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) ))) ;) })) (if_statement "if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }" if (parenthesized_expression "((void *)param_1[3] != (void *)0x0)" ( (binary_expression "(void *)param_1[3] != (void *)0x0" (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free((void *)param_1[3]);\n  }" { (expression_statement "free((void *)param_1[3]);" (call_expression "free((void *)param_1[3])" identifier (argument_list "((void *)param_1[3])" ( (cast_expression "(void *)param_1[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[3]" identifier [ number_literal ])) ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 6))" ( (binary_expression "0 < *(int *)(param_1 + 6)" number_literal < (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));" do (compound_statement "{\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" ( (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar5 * 0x18" identifier * number_literal)) )))) ;) (if_statement "if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" if (parenthesized_expression "((void *)*puVar2 != (void *)0x0)" ( (binary_expression "(void *)*puVar2 != (void *)0x0" (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" { (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" identifier (argument_list "((void *)*puVar2)" ( (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) ))) ;) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" ( (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar5 * 0x18" identifier * number_literal)) )))) ;) })) (if_statement "if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" if (parenthesized_expression "((void *)puVar2[1] != (void *)0x0)" ( (binary_expression "(void *)puVar2[1] != (void *)0x0" (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" { (expression_statement "free((void *)puVar2[1]);" (call_expression "free((void *)puVar2[1])" identifier (argument_list "((void *)puVar2[1])" ( (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" identifier = (cast_expression "(void *)param_1[7]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[7]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 6))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 6)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 6)" * (cast_expression "(int *)(param_1 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 6)" ( (binary_expression "param_1 + 6" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 8))" ( (binary_expression "0 < *(int *)(param_1 + 8)" number_literal < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));" do (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" identifier = (binary_expression "lVar5 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar1 = (void *)puVar2[1];" (assignment_expression "pvVar1 = (void *)puVar2[1]" identifier = (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }" { (labeled_statement "LAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" statement_identifier : (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" if (parenthesized_expression "(pvVar3 != (void *)0x0)" ( (binary_expression "pvVar3 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ac6e;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" else (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" { (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" if (parenthesized_expression "(pvVar1 != pvVar3)" ( (binary_expression "pvVar1 != pvVar3" identifier != identifier) )) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" { (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" identifier (argument_list "(pvVar1)" ( identifier ))) ;) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (goto_statement "goto LAB_0014ac30;" goto statement_identifier ;) })) (labeled_statement "LAB_0014ac6e:\n          free(pvVar3);" statement_identifier : (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" identifier (argument_list "(pvVar3)" ( identifier ))) ;)) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) }))) (if_statement "if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" if (parenthesized_expression "((void *)puVar2[2] != (void *)0x0)" ( (binary_expression "(void *)puVar2[2] != (void *)0x0" (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" { (expression_statement "free((void *)puVar2[2]);" (call_expression "free((void *)puVar2[2])" identifier (argument_list "((void *)puVar2[2])" ( (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" identifier = (cast_expression "(void *)param_1[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[9]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 8))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 8)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" if (parenthesized_expression "(pvVar4 != (void *)0x0)" ( (binary_expression "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" { (if_statement "if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" if (parenthesized_expression "(0 < *(int *)(param_1 + 0xb))" ( (binary_expression "0 < *(int *)(param_1 + 0xb)" number_literal < (pointer_expression "*(int *)(param_1 + 0xb)" * (cast_expression "(int *)(param_1 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))))) )) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" { (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));" do (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      }" { (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" identifier = (binary_expression "lVar5 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar1 = (void *)*puVar2;" (assignment_expression "pvVar1 = (void *)*puVar2" identifier = (cast_expression "(void *)*puVar2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" identifier = (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" if (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }" { (labeled_statement "LAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;" statement_identifier : (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014acef;" if (parenthesized_expression "(pvVar3 != (void *)0x0)" ( (binary_expression "pvVar3 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014acef;" goto statement_identifier ;))) }) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" else (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" { (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" if (parenthesized_expression "(pvVar1 != pvVar3)" ( (binary_expression "pvVar1 != pvVar3" identifier != identifier) )) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" { (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" identifier (argument_list "(pvVar1)" ( identifier ))) ;) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" identifier = (cast_expression "(void *)puVar2[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[2]" identifier [ number_literal ]))) ;) (goto_statement "goto LAB_0014acb1;" goto statement_identifier ;) })) (labeled_statement "LAB_0014acef:\n          free(pvVar3);" statement_identifier : (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" identifier (argument_list "(pvVar3)" ( identifier ))) ;)) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" identifier = (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar4 + lVar6)" ( (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) }))) (if_statement "if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" if (parenthesized_expression "((void *)puVar2[3] != (void *)0x0)" ( (binary_expression "(void *)puVar2[3] != (void *)0x0" (cast_expression "(void *)puVar2[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" { (expression_statement "free((void *)puVar2[3]);" (call_expression "free((void *)puVar2[3])" identifier (argument_list "((void *)puVar2[3])" ( (cast_expression "(void *)puVar2[3]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[3]" identifier [ number_literal ])) ))) ;) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" identifier = (cast_expression "(void *)param_1[0xc]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) })) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 0xb))" ( (binary_expression "(int)lVar5 < *(int *)(param_1 + 0xb)" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(param_1 + 0xb)" * (cast_expression "(int *)(param_1 + 0xb)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) ))))) )) ;) })) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) })) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0014ad59;" goto statement_identifier ;)) (do_statement "do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);" do (compound_statement "{\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  }" { (expression_statement "param_1[10] = *puVar2;" (assignment_expression "param_1[10] = *puVar2" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (while_statement "while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" while (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" ( (binary_expression "puVar2 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" { (expression_statement "pvVar4 = (void *)puVar2[1];" (assignment_expression "pvVar4 = (void *)puVar2[1]" identifier = (cast_expression "(void *)puVar2[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar2[1]" identifier [ number_literal ]))) ;) (expression_statement "param_1[0xe] = *puVar2;" (assignment_expression "param_1[0xe] = *puVar2" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = (pointer_expression "*puVar2" * identifier)) ;) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" identifier (argument_list "(pvVar4)" ( identifier ))) ;) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" identifier (argument_list "(puVar2)" ( identifier ))) ;) (labeled_statement "LAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];" statement_identifier : (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" identifier = (cast_expression "(undefined8 *)param_1[0xe]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;)) })) (expression_statement "free(param_1);" (call_expression "free(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_0014ab80(undefined8 *param_1)\n\n{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0014ab80(undefined8 *param_1)" (identifier "FUN_0014ab80") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  void *pvVar1;\n  undefined8 *puVar2;\n  void *pvVar3;\n  void *pvVar4;\n  long lVar5;\n  long lVar6;\n  \n  if (param_1 == (undefined8 *)0x0) {\n    return;\n  }\n  if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }\n  if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }\n  pvVar4 = (void *)param_1[7];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[9];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }\n  pvVar4 = (void *)param_1[0xc];\n  if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }\n  puVar2 = (undefined8 *)param_1[10];\n  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;\n  do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);\n  puVar2 = (undefined8 *)param_1[0xe];\n  while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }\n  free(param_1);\n  return;\n}" ({ "{") (declaration "void *pvVar1;" (primitive_type "void") (pointer_declarator "*pvVar1" (* "*") (identifier "pvVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "void *pvVar3;" (primitive_type "void") (pointer_declarator "*pvVar3" (* "*") (identifier "pvVar3")) (; ";")) (declaration "void *pvVar4;" (primitive_type "void") (pointer_declarator "*pvVar4" (* "*") (identifier "pvVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_1 == (undefined8 *)0x0)" (( "(") (binary_expression "param_1 == (undefined8 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((void *)*param_1 != (void *)0x0) {\n    free((void *)*param_1);\n  }" (if "if") (parenthesized_expression "((void *)*param_1 != (void *)0x0)" (( "(") (binary_expression "(void *)*param_1 != (void *)0x0" (cast_expression "(void *)*param_1" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free((void *)*param_1);\n  }" ({ "{") (expression_statement "free((void *)*param_1);" (call_expression "free((void *)*param_1)" (identifier "free") (argument_list "((void *)*param_1)" (( "(") (cast_expression "(void *)*param_1" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((void *)param_1[3] != (void *)0x0) {\n    free((void *)param_1[3]);\n  }" (if "if") (parenthesized_expression "((void *)param_1[3] != (void *)0x0)" (( "(") (binary_expression "(void *)param_1[3] != (void *)0x0" (cast_expression "(void *)param_1[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free((void *)param_1[3]);\n  }" ({ "{") (expression_statement "free((void *)param_1[3]);" (call_expression "free((void *)param_1[3])" (identifier "free") (argument_list "((void *)param_1[3])" (( "(") (cast_expression "(void *)param_1[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) () ")"))) (; ";")) (} "}"))) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[7]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" (if "if") (parenthesized_expression "(pvVar4 != (void *)0x0)" (( "(") (binary_expression "pvVar4 != (void *)0x0" (identifier "pvVar4") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }\n    free(pvVar4);\n  }" ({ "{") (if_statement "if (0 < *(int *)(param_1 + 6)) {\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 6))" (( "(") (binary_expression "0 < *(int *)(param_1 + 6)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 6)" (* "*") (cast_expression "(int *)(param_1 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")"))))) () ")")) (compound_statement "{\n      lVar5 = 0;\n      do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));\n    }" ({ "{") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 6));" (do "do") (compound_statement "{\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }\n        if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }\n        lVar5 = lVar5 + 1;\n      }" ({ "{") (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" (( "(") (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (binary_expression "lVar5 * 0x18" (identifier "lVar5") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (if_statement "if ((void *)*puVar2 != (void *)0x0) {\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" (if "if") (parenthesized_expression "((void *)*puVar2 != (void *)0x0)" (( "(") (binary_expression "(void *)*puVar2 != (void *)0x0" (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          free((void *)*puVar2);\n          pvVar4 = (void *)param_1[7];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);\n        }" ({ "{") (expression_statement "free((void *)*puVar2);" (call_expression "free((void *)*puVar2)" (identifier "free") (argument_list "((void *)*puVar2)" (( "(") (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[7]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar5 * 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar5 * 0x18)" (( "(") (binary_expression "(long)pvVar4 + lVar5 * 0x18" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (binary_expression "lVar5 * 0x18" (identifier "lVar5") (* "*") (number_literal "0x18"))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((void *)puVar2[1] != (void *)0x0) {\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" (if "if") (parenthesized_expression "((void *)puVar2[1] != (void *)0x0)" (( "(") (binary_expression "(void *)puVar2[1] != (void *)0x0" (cast_expression "(void *)puVar2[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          free((void *)puVar2[1]);\n          pvVar4 = (void *)param_1[7];\n        }" ({ "{") (expression_statement "free((void *)puVar2[1]);" (call_expression "free((void *)puVar2[1])" (identifier "free") (argument_list "((void *)puVar2[1])" (( "(") (cast_expression "(void *)puVar2[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]"))) () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[7];" (assignment_expression "pvVar4 = (void *)param_1[7]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[7]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")))) (; ";")) (} "}"))) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 6))" (( "(") (binary_expression "(int)lVar5 < *(int *)(param_1 + 6)" (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5")) (< "<") (pointer_expression "*(int *)(param_1 + 6)" (* "*") (cast_expression "(int *)(param_1 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 6)" (( "(") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" (identifier "free") (argument_list "(pvVar4)" (( "(") (identifier "pvVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[9]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" (if "if") (parenthesized_expression "(pvVar4 != (void *)0x0)" (( "(") (binary_expression "pvVar4 != (void *)0x0" (identifier "pvVar4") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }\n    free(pvVar4);\n  }" ({ "{") (if_statement "if (0 < *(int *)(param_1 + 8)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 8))" (( "(") (binary_expression "0 < *(int *)(param_1 + 8)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));\n    }" ({ "{") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 8));" (do "do") (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)puVar2[1];\n        pvVar3 = (void *)*puVar2;\n        if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }\n        lVar5 = lVar5 + 1;\n      }" ({ "{") (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" (identifier "lVar6") (= "=") (binary_expression "lVar5 * 0x28" (identifier "lVar5") (* "*") (number_literal "0x28"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (expression_statement "pvVar1 = (void *)puVar2[1];" (assignment_expression "pvVar1 = (void *)puVar2[1]" (identifier "pvVar1") (= "=") (cast_expression "(void *)puVar2[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" (identifier "pvVar3") (= "=") (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" (if "if") (parenthesized_expression "(pvVar1 == (void *)0x0)" (( "(") (binary_expression "pvVar1 == (void *)0x0" (identifier "pvVar1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;\n        }" ({ "{") (labeled_statement "LAB_0014ac30:\n          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" (statement_identifier "LAB_0014ac30") (: ":") (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;" (if "if") (parenthesized_expression "(pvVar3 != (void *)0x0)" (( "(") (binary_expression "pvVar3 != (void *)0x0" (identifier "pvVar3") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0014ac6e;" (goto "goto") (statement_identifier "LAB_0014ac6e") (; ";")))) (} "}")) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" (else "else") (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }\nLAB_0014ac6e:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[9];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" ({ "{") (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" (if "if") (parenthesized_expression "(pvVar1 != pvVar3)" (( "(") (binary_expression "pvVar1 != pvVar3" (identifier "pvVar1") (!= "!=") (identifier "pvVar3")) () ")")) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[9];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)*puVar2;\n            goto LAB_0014ac30;\n          }" ({ "{") (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" (identifier "free") (argument_list "(pvVar1)" (( "(") (identifier "pvVar1") () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[9]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (expression_statement "pvVar3 = (void *)*puVar2;" (assignment_expression "pvVar3 = (void *)*puVar2" (identifier "pvVar3") (= "=") (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (goto_statement "goto LAB_0014ac30;" (goto "goto") (statement_identifier "LAB_0014ac30") (; ";")) (} "}"))) (labeled_statement "LAB_0014ac6e:\n          free(pvVar3);" (statement_identifier "LAB_0014ac6e") (: ":") (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" (identifier "free") (argument_list "(pvVar3)" (( "(") (identifier "pvVar3") () ")"))) (; ";"))) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[9]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (} "}")))) (if_statement "if ((void *)puVar2[2] != (void *)0x0) {\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" (if "if") (parenthesized_expression "((void *)puVar2[2] != (void *)0x0)" (( "(") (binary_expression "(void *)puVar2[2] != (void *)0x0" (cast_expression "(void *)puVar2[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          free((void *)puVar2[2]);\n          pvVar4 = (void *)param_1[9];\n        }" ({ "{") (expression_statement "free((void *)puVar2[2]);" (call_expression "free((void *)puVar2[2])" (identifier "free") (argument_list "((void *)puVar2[2])" (( "(") (cast_expression "(void *)puVar2[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]"))) () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[9];" (assignment_expression "pvVar4 = (void *)param_1[9]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[9]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")))) (; ";")) (} "}"))) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 8))" (( "(") (binary_expression "(int)lVar5 < *(int *)(param_1 + 8)" (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5")) (< "<") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" (identifier "free") (argument_list "(pvVar4)" (( "(") (identifier "pvVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[0xc]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (if_statement "if (pvVar4 != (void *)0x0) {\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" (if "if") (parenthesized_expression "(pvVar4 != (void *)0x0)" (( "(") (binary_expression "pvVar4 != (void *)0x0" (identifier "pvVar4") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }\n    free(pvVar4);\n  }" ({ "{") (if_statement "if (0 < *(int *)(param_1 + 0xb)) {\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" (if "if") (parenthesized_expression "(0 < *(int *)(param_1 + 0xb))" (( "(") (binary_expression "0 < *(int *)(param_1 + 0xb)" (number_literal "0") (< "<") (pointer_expression "*(int *)(param_1 + 0xb)" (* "*") (cast_expression "(int *)(param_1 + 0xb)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")"))))) () ")")) (compound_statement "{\n      lVar5 = 0;\n      do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));\n    }" ({ "{") (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      } while ((int)lVar5 < *(int *)(param_1 + 0xb));" (do "do") (compound_statement "{\n        lVar6 = lVar5 * 0x28;\n        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        pvVar1 = (void *)*puVar2;\n        pvVar3 = (void *)puVar2[2];\n        if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }\n        if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }\n        lVar5 = lVar5 + 1;\n      }" ({ "{") (expression_statement "lVar6 = lVar5 * 0x28;" (assignment_expression "lVar6 = lVar5 * 0x28" (identifier "lVar6") (= "=") (binary_expression "lVar5 * 0x28" (identifier "lVar5") (* "*") (number_literal "0x28"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (expression_statement "pvVar1 = (void *)*puVar2;" (assignment_expression "pvVar1 = (void *)*puVar2" (identifier "pvVar1") (= "=") (cast_expression "(void *)*puVar2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" (identifier "pvVar3") (= "=") (cast_expression "(void *)puVar2[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pvVar1 == (void *)0x0) {\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }\n        else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" (if "if") (parenthesized_expression "(pvVar1 == (void *)0x0)" (( "(") (binary_expression "pvVar1 == (void *)0x0" (identifier "pvVar1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;\n        }" ({ "{") (labeled_statement "LAB_0014acb1:\n          if (pvVar3 != (void *)0x0) goto LAB_0014acef;" (statement_identifier "LAB_0014acb1") (: ":") (if_statement "if (pvVar3 != (void *)0x0) goto LAB_0014acef;" (if "if") (parenthesized_expression "(pvVar3 != (void *)0x0)" (( "(") (binary_expression "pvVar3 != (void *)0x0" (identifier "pvVar3") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0014acef;" (goto "goto") (statement_identifier "LAB_0014acef") (; ";")))) (} "}")) (else_clause "else {\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" (else "else") (compound_statement "{\n          if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }\nLAB_0014acef:\n          free(pvVar3);\n          pvVar4 = (void *)param_1[0xc];\n          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n        }" ({ "{") (if_statement "if (pvVar1 != pvVar3) {\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" (if "if") (parenthesized_expression "(pvVar1 != pvVar3)" (( "(") (binary_expression "pvVar1 != pvVar3" (identifier "pvVar1") (!= "!=") (identifier "pvVar3")) () ")")) (compound_statement "{\n            free(pvVar1);\n            pvVar4 = (void *)param_1[0xc];\n            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);\n            pvVar3 = (void *)puVar2[2];\n            goto LAB_0014acb1;\n          }" ({ "{") (expression_statement "free(pvVar1);" (call_expression "free(pvVar1)" (identifier "free") (argument_list "(pvVar1)" (( "(") (identifier "pvVar1") () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[0xc]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (expression_statement "pvVar3 = (void *)puVar2[2];" (assignment_expression "pvVar3 = (void *)puVar2[2]" (identifier "pvVar3") (= "=") (cast_expression "(void *)puVar2[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")))) (; ";")) (goto_statement "goto LAB_0014acb1;" (goto "goto") (statement_identifier "LAB_0014acb1") (; ";")) (} "}"))) (labeled_statement "LAB_0014acef:\n          free(pvVar3);" (statement_identifier "LAB_0014acef") (: ":") (expression_statement "free(pvVar3);" (call_expression "free(pvVar3)" (identifier "free") (argument_list "(pvVar3)" (( "(") (identifier "pvVar3") () ")"))) (; ";"))) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[0xc]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)pvVar4 + lVar6);" (assignment_expression "puVar2 = (undefined8 *)((long)pvVar4 + lVar6)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)pvVar4 + lVar6)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar4 + lVar6)" (( "(") (binary_expression "(long)pvVar4 + lVar6" (cast_expression "(long)pvVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar4")) (+ "+") (identifier "lVar6")) () ")")))) (; ";")) (} "}")))) (if_statement "if ((void *)puVar2[3] != (void *)0x0) {\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" (if "if") (parenthesized_expression "((void *)puVar2[3] != (void *)0x0)" (( "(") (binary_expression "(void *)puVar2[3] != (void *)0x0" (cast_expression "(void *)puVar2[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          free((void *)puVar2[3]);\n          pvVar4 = (void *)param_1[0xc];\n        }" ({ "{") (expression_statement "free((void *)puVar2[3]);" (call_expression "free((void *)puVar2[3])" (identifier "free") (argument_list "((void *)puVar2[3])" (( "(") (cast_expression "(void *)puVar2[3]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]"))) () ")"))) (; ";")) (expression_statement "pvVar4 = (void *)param_1[0xc];" (assignment_expression "pvVar4 = (void *)param_1[0xc]" (identifier "pvVar4") (= "=") (cast_expression "(void *)param_1[0xc]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (} "}"))) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar5 < *(int *)(param_1 + 0xb))" (( "(") (binary_expression "(int)lVar5 < *(int *)(param_1 + 0xb)" (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5")) (< "<") (pointer_expression "*(int *)(param_1 + 0xb)" (* "*") (cast_expression "(int *)(param_1 + 0xb)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" (identifier "free") (argument_list "(pvVar4)" (( "(") (identifier "pvVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;" (if "if") (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined8 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0014ad59;" (goto "goto") (statement_identifier "LAB_0014ad59") (; ";"))) (do_statement "do {\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  } while (puVar2 != (undefined8 *)0x0);" (do "do") (compound_statement "{\n    param_1[10] = *puVar2;\n    free(puVar2);\n    puVar2 = (undefined8 *)param_1[10];\n  }" ({ "{") (expression_statement "param_1[10] = *puVar2;" (assignment_expression "param_1[10] = *puVar2" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" (identifier "free") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (expression_statement "puVar2 = (undefined8 *)param_1[10];" (assignment_expression "puVar2 = (undefined8 *)param_1[10]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)param_1[0xe]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (while_statement "while (puVar2 != (undefined8 *)0x0) {\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" (while "while") (parenthesized_expression "(puVar2 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 != (undefined8 *)0x0" (identifier "puVar2") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    pvVar4 = (void *)puVar2[1];\n    param_1[0xe] = *puVar2;\n    free(pvVar4);\n    free(puVar2);\nLAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];\n  }" ({ "{") (expression_statement "pvVar4 = (void *)puVar2[1];" (assignment_expression "pvVar4 = (void *)puVar2[1]" (identifier "pvVar4") (= "=") (cast_expression "(void *)puVar2[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_1[0xe] = *puVar2;" (assignment_expression "param_1[0xe] = *puVar2" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) (; ";")) (expression_statement "free(pvVar4);" (call_expression "free(pvVar4)" (identifier "free") (argument_list "(pvVar4)" (( "(") (identifier "pvVar4") () ")"))) (; ";")) (expression_statement "free(puVar2);" (call_expression "free(puVar2)" (identifier "free") (argument_list "(puVar2)" (( "(") (identifier "puVar2") () ")"))) (; ";")) (labeled_statement "LAB_0014ad59:\n    puVar2 = (undefined8 *)param_1[0xe];" (statement_identifier "LAB_0014ad59") (: ":") (expression_statement "puVar2 = (undefined8 *)param_1[0xe];" (assignment_expression "puVar2 = (undefined8 *)param_1[0xe]" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)param_1[0xe]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";"))) (} "}"))) (expression_statement "free(param_1);" (call_expression "free(param_1)" (identifier "free") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *var_1)

{
  char *var_6;
  type_2 *var_10;
  type_3 *pdVar2;
  type_4 *pdVar3;
  type_5 *pdVar4;
  char *var_7;
  type_3 *var_3;
  type_4 *var_5;
  type_5 *var_8;
  long var_4;
  type_6 *var_9;
  
  if (var_1 == (type_1 *)0x0) {
    return;
  }
  if (var_1->name != (char *)0x0) {
    var_2(var_1->name);
  }
  if (var_1->description != (char *)0x0) {
    var_2(var_1->description);
  }
  var_3 = var_1->section_defs;
  if (var_3 != (type_3 *)0x0) {
    if (0 < var_1->num_section_defs) {
      var_4 = 0;
      do {
        pdVar2 = var_3 + var_4;
        if (pdVar2->name != (char *)0x0) {
          var_2(pdVar2->name);
          var_3 = var_1->section_defs;
          pdVar2 = var_3 + var_4;
        }
        if (pdVar2->class != (char *)0x0) {
          var_2(pdVar2->class);
          var_3 = var_1->section_defs;
        }
        var_4 = var_4 + 1;
      } while ((int)var_4 < var_1->num_section_defs);
    }
    var_2(var_3);
  }
  var_5 = var_1->exports;
  if (var_5 != (type_4 *)0x0) {
    if (0 < var_1->num_exports) {
      var_4 = 0;
      do {
        pdVar3 = var_5 + var_4;
        var_6 = pdVar3->internal_name;
        var_7 = pdVar3->name;
        if (var_6 == (char *)0x0) {
LAB_0014ac30:
          if (var_7 != (char *)0x0) goto LAB_0014ac6e;
        }
        else {
          if (var_6 != var_7) {
            var_2(var_6);
            var_5 = var_1->exports;
            pdVar3 = var_5 + var_4;
            var_7 = pdVar3->name;
            goto LAB_0014ac30;
          }
LAB_0014ac6e:
          var_2(var_7);
          var_5 = var_1->exports;
          pdVar3 = var_5 + var_4;
        }
        if (pdVar3->its_name != (char *)0x0) {
          var_2(pdVar3->its_name);
          var_5 = var_1->exports;
        }
        var_4 = var_4 + 1;
      } while ((int)var_4 < var_1->num_exports);
    }
    var_2(var_5);
  }
  var_8 = var_1->imports;
  if (var_8 != (type_5 *)0x0) {
    if (0 < var_1->num_imports) {
      var_4 = 0;
      do {
        pdVar4 = var_8 + var_4;
        var_6 = pdVar4->internal_name;
        var_7 = pdVar4->name;
        if (var_6 == (char *)0x0) {
LAB_0014acb1:
          if (var_7 != (char *)0x0) goto LAB_0014acef;
        }
        else {
          if (var_6 != var_7) {
            var_2(var_6);
            var_8 = var_1->imports;
            pdVar4 = var_8 + var_4;
            var_7 = pdVar4->name;
            goto LAB_0014acb1;
          }
LAB_0014acef:
          var_2(var_7);
          var_8 = var_1->imports;
          pdVar4 = var_8 + var_4;
        }
        if (pdVar4->its_name != (char *)0x0) {
          var_2(pdVar4->its_name);
          var_8 = var_1->imports;
        }
        var_4 = var_4 + 1;
      } while ((int)var_4 < var_1->num_imports);
    }
    var_2(var_8);
  }
  var_9 = var_1->modules;
  if (var_9 == (type_6 *)0x0) goto LAB_0014ad59;
  do {
    var_1->modules = var_9->next;
    var_2(var_9);
    var_9 = var_1->modules;
  } while (var_9 != (type_6 *)0x0);
  var_10 = var_1->aligncomms;
  while (var_10 != (type_2 *)0x0) {
    var_6 = var_10->symbol_name;
    var_1->aligncomms = var_10->next;
    var_2(var_6);
    var_2(var_10);
LAB_0014ad59:
    var_10 = var_1->aligncomms;
  }
  var_2(var_1);
  return;
}


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

void MASKED(undefined8 *param_1)

{
  void *pvVar1;
  undefined8 *puVar2;
  void *pvVar3;
  void *pvVar4;
  long lVar5;
  long lVar6;
  
  if (param_1 == (undefined8 *)0x0) {
    return;
  }
  if ((void *)*param_1 != (void *)0x0) {
    free((void *)*param_1);
  }
  if ((void *)param_1[3] != (void *)0x0) {
    free((void *)param_1[3]);
  }
  pvVar4 = (void *)param_1[7];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 6)) {
      lVar5 = 0;
      do {
        puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);
        if ((void *)*puVar2 != (void *)0x0) {
          free((void *)*puVar2);
          pvVar4 = (void *)param_1[7];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar5 * 0x18);
        }
        if ((void *)puVar2[1] != (void *)0x0) {
          free((void *)puVar2[1]);
          pvVar4 = (void *)param_1[7];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 6));
    }
    free(pvVar4);
  }
  pvVar4 = (void *)param_1[9];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 8)) {
      lVar5 = 0;
      do {
        lVar6 = lVar5 * 0x28;
        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        pvVar1 = (void *)puVar2[1];
        pvVar3 = (void *)*puVar2;
        if (pvVar1 == (void *)0x0) {
LAB_0014ac30:
          if (pvVar3 != (void *)0x0) goto LAB_0014ac6e;
        }
        else {
          if (pvVar1 != pvVar3) {
            free(pvVar1);
            pvVar4 = (void *)param_1[9];
            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
            pvVar3 = (void *)*puVar2;
            goto LAB_0014ac30;
          }
LAB_0014ac6e:
          free(pvVar3);
          pvVar4 = (void *)param_1[9];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        }
        if ((void *)puVar2[2] != (void *)0x0) {
          free((void *)puVar2[2]);
          pvVar4 = (void *)param_1[9];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 8));
    }
    free(pvVar4);
  }
  pvVar4 = (void *)param_1[0xc];
  if (pvVar4 != (void *)0x0) {
    if (0 < *(int *)(param_1 + 0xb)) {
      lVar5 = 0;
      do {
        lVar6 = lVar5 * 0x28;
        puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        pvVar1 = (void *)*puVar2;
        pvVar3 = (void *)puVar2[2];
        if (pvVar1 == (void *)0x0) {
LAB_0014acb1:
          if (pvVar3 != (void *)0x0) goto LAB_0014acef;
        }
        else {
          if (pvVar1 != pvVar3) {
            free(pvVar1);
            pvVar4 = (void *)param_1[0xc];
            puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
            pvVar3 = (void *)puVar2[2];
            goto LAB_0014acb1;
          }
LAB_0014acef:
          free(pvVar3);
          pvVar4 = (void *)param_1[0xc];
          puVar2 = (undefined8 *)((long)pvVar4 + lVar6);
        }
        if ((void *)puVar2[3] != (void *)0x0) {
          free((void *)puVar2[3]);
          pvVar4 = (void *)param_1[0xc];
        }
        lVar5 = lVar5 + 1;
      } while ((int)lVar5 < *(int *)(param_1 + 0xb));
    }
    free(pvVar4);
  }
  puVar2 = (undefined8 *)param_1[10];
  if (puVar2 == (undefined8 *)0x0) goto LAB_0014ad59;
  do {
    param_1[10] = *puVar2;
    free(puVar2);
    puVar2 = (undefined8 *)param_1[10];
  } while (puVar2 != (undefined8 *)0x0);
  puVar2 = (undefined8 *)param_1[0xe];
  while (puVar2 != (undefined8 *)0x0) {
    pvVar4 = (void *)puVar2[1];
    param_1[0xe] = *puVar2;
    free(pvVar4);
    free(puVar2);
LAB_0014ad59:
    puVar2 = (undefined8 *)param_1[0xe];
  }
  free(param_1);
  return;
}

