
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void free_debug_memory(void)

{
  dwarf_vma **ppdVar1;
  debug_info *pdVar2;
  debug_info *__ptr;
  dwarf_section_display_enum debug;
  dwarf_section_display_enum dVar3;
  dwarf_vma **ppdVar4;
  
  free_abbrevs();
  debug = abbrev;
  do {
    dVar3 = debug + aranges;
    free_debug_section(debug);
    __ptr = debug_information;
    debug = dVar3;
  } while (dVar3 != max);
  if (debug_information != (debug_info *)0x0) {
    if (num_debug_info_entries - 1 < 0xfffffffe) {
      ppdVar4 = &debug_information->loc_offsets;
      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;
      do {
        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {
          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;
LAB_00126147:
          ppdVar1 = ppdVar4 + 5;
          ppdVar4 = ppdVar4 + 0xd;
          free(*ppdVar1);
          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;
        }
        free(*ppdVar4);
        free(ppdVar4[2]);
        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;
LAB_0012611f:
        ppdVar4 = ppdVar4 + 0xd;
      } while (ppdVar4 != &pdVar2->loc_offsets);
    }
LAB_00126159:
    free(__ptr);
    debug_information = (debug_info *)0x0;
    num_debug_info_entries = 0;
    alloc_num_debug_info_entries = 0;
  }
  if (separate_debug_file != (void *)0x0) {
    close_debug_file(separate_debug_file);
    separate_debug_file = (void *)0x0;
    free(separate_debug_filename);
    separate_debug_filename = (char *)0x0;
  }
  return;
}



void FUN_001260c0(void)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  void *__ptr;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  
  FUN_0010eec0();
  iVar3 = 0;
  do {
    iVar4 = iVar3 + 1;
    FUN_0010e270(iVar3);
    __ptr = DAT_00159bc8;
    iVar3 = iVar4;
  } while (iVar4 != 0x2b);
  if (DAT_00159bc8 != (void *)0x0) {
    if (DAT_00159bd4 - 1U < 0xfffffffe) {
      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);
      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);
      do {
        while (*(int *)((long)puVar5 + 0x1c) != 0) {
          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;
LAB_00126147:
          puVar1 = puVar5 + 5;
          puVar5 = puVar5 + 0xd;
          free((void *)*puVar1);
          if (puVar5 == puVar2) goto LAB_00126159;
        }
        free((void *)*puVar5);
        free((void *)puVar5[2]);
        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;
LAB_0012611f:
        puVar5 = puVar5 + 0xd;
      } while (puVar5 != puVar2);
    }
LAB_00126159:
    free(__ptr);
    DAT_00159bc8 = (void *)0x0;
    DAT_00159bd4 = 0;
    DAT_00159bd0 = 0;
  }
  if (DAT_00159b88 != 0) {
    bfd_close();
    DAT_00159b88 = 0;
    free(DAT_00159b80);
    DAT_00159b80 = (void *)0x0;
  }
  return;
}


PUSH R12
PUSH RBP
PUSH RBX
XOR EBX,EBX
CALL 0x0010eec0
NOP dword ptr [RAX + RAX*0x1]
MOV EDI,EBX
ADD EBX,0x1
CALL 0x0010e270
CMP EBX,0x2b
JNZ 0x001260d0
MOV R12,qword ptr [0x00159bc8]
TEST R12,R12
JZ 0x00126180
MOV EAX,dword ptr [0x00159bd4]
SUB EAX,0x1
CMP EAX,-0x3
JA 0x00126159
LEA RDX,[RAX + RAX*0x2]
LEA RBX,[R12 + 0x30]
LEA RAX,[RAX + RDX*0x4]
LEA RBP,[R12 + RAX*0x8 + 0x98]
JMP 0x00126128
MOV EAX,dword ptr [RBX + 0x34]
TEST EAX,EAX
JZ 0x00126147
ADD RBX,0x68
CMP RBX,RBP
JZ 0x00126159
MOV EDX,dword ptr [RBX + 0x1c]
TEST EDX,EDX
JNZ 0x00126118
MOV RDI,qword ptr [RBX]
CALL 0x00107070
MOV RDI,qword ptr [RBX + 0x10]
CALL 0x00107070
MOV EAX,dword ptr [RBX + 0x34]
TEST EAX,EAX
JNZ 0x0012611f
MOV RDI,qword ptr [RBX + 0x28]
ADD RBX,0x68
CALL 0x00107070
CMP RBX,RBP
JNZ 0x00126128
MOV RDI,R12
CALL 0x00107070
MOV qword ptr [0x00159bc8],0x0
MOV dword ptr [0x00159bd4],0x0
MOV dword ptr [0x00159bd0],0x0
MOV RDI,qword ptr [0x00159b88]
TEST RDI,RDI
JZ 0x001261b3
CALL 0x0010e6f0
MOV RDI,qword ptr [0x00159b80]
MOV qword ptr [0x00159b88],0x0
CALL 0x00107070
MOV qword ptr [0x00159b80],0x0
POP RBX
POP RBP
POP R12
RET
(translation_unit "void FUN_001260c0(void)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_001260c0(void)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001260c0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "FUN_0010eec0();" (call_expression "FUN_0010eec0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);" do (compound_statement "{\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  }" { (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0010e270(iVar3);" (call_expression "FUN_0010e270(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "__ptr = DAT_00159bc8;" (assignment_expression "__ptr = DAT_00159bc8" identifier = identifier) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0x2b)" ( (binary_expression "iVar4 != 0x2b" identifier != number_literal) )) ;) (if_statement "if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" if (parenthesized_expression "(DAT_00159bc8 != (void *)0x0)" ( (binary_expression "DAT_00159bc8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" { (if_statement "if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" if (parenthesized_expression "(DAT_00159bd4 - 1U < 0xfffffffe)" ( (binary_expression "DAT_00159bd4 - 1U < 0xfffffffe" (binary_expression "DAT_00159bd4 - 1U" identifier - number_literal) < number_literal) )) (compound_statement "{\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" { (expression_statement "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);" (assignment_expression "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30)" identifier = (cast_expression "(undefined8 *)((long)DAT_00159bc8 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_00159bc8 + 0x30)" ( (binary_expression "(long)DAT_00159bc8 + 0x30" (cast_expression "(long)DAT_00159bc8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);" (assignment_expression "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" identifier = (cast_expression "(undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" ( (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98" (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68" (cast_expression "(long)DAT_00159bc8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(DAT_00159bd4 - 1U) * 0x68" (call_expression "(ulong)(DAT_00159bd4 - 1U)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_00159bd4 - 1U)" ( (binary_expression "DAT_00159bd4 - 1U" identifier - number_literal) ))) * number_literal)) + number_literal) )))) ;) (do_statement "do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);" do (compound_statement "{\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      }" { (while_statement "while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" while (parenthesized_expression "(*(int *)((long)puVar5 + 0x1c) != 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x1c) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x1c)" * (cast_expression "(int *)((long)puVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x1c)" ( (binary_expression "(long)puVar5 + 0x1c" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" { (if_statement "if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;" if (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) != 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x34) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" * (cast_expression "(int *)((long)puVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x34)" ( (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0012611f;" goto statement_identifier ;)) (labeled_statement "LAB_00126147:\n          puVar1 = puVar5 + 5;" statement_identifier : (expression_statement "puVar1 = puVar5 + 5;" (assignment_expression "puVar1 = puVar5 + 5" identifier = (binary_expression "puVar5 + 5" identifier + number_literal)) ;)) (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;) (expression_statement "free((void *)*puVar1);" (call_expression "free((void *)*puVar1)" identifier (argument_list "((void *)*puVar1)" ( (cast_expression "(void *)*puVar1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) ))) ;) (if_statement "if (puVar5 == puVar2) goto LAB_00126159;" if (parenthesized_expression "(puVar5 == puVar2)" ( (binary_expression "puVar5 == puVar2" identifier == identifier) )) (goto_statement "goto LAB_00126159;" goto statement_identifier ;)) })) (expression_statement "free((void *)*puVar5);" (call_expression "free((void *)*puVar5)" identifier (argument_list "((void *)*puVar5)" ( (cast_expression "(void *)*puVar5" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)) ))) ;) (expression_statement "free((void *)puVar5[2]);" (call_expression "free((void *)puVar5[2])" identifier (argument_list "((void *)puVar5[2])" ( (cast_expression "(void *)puVar5[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[2]" identifier [ number_literal ])) ))) ;) (if_statement "if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;" if (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) == 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x34) == 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" * (cast_expression "(int *)((long)puVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x34)" ( (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00126147;" goto statement_identifier ;)) (labeled_statement "LAB_0012611f:\n        puVar5 = puVar5 + 0xd;" statement_identifier : (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;)) }) while (parenthesized_expression "(puVar5 != puVar2)" ( (binary_expression "puVar5 != puVar2" identifier != identifier) )) ;) })) (labeled_statement "LAB_00126159:\n    free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (expression_statement "DAT_00159bc8 = (void *)0x0;" (assignment_expression "DAT_00159bc8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_00159bd4 = 0;" (assignment_expression "DAT_00159bd4 = 0" identifier = number_literal) ;) (expression_statement "DAT_00159bd0 = 0;" (assignment_expression "DAT_00159bd0 = 0" identifier = number_literal) ;) })) (if_statement "if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" if (parenthesized_expression "(DAT_00159b88 != 0)" ( (binary_expression "DAT_00159b88 != 0" identifier != number_literal) )) (compound_statement "{\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" { (expression_statement "bfd_close();" (call_expression "bfd_close()" identifier (argument_list "()" ( ))) ;) (expression_statement "DAT_00159b88 = 0;" (assignment_expression "DAT_00159b88 = 0" identifier = number_literal) ;) (expression_statement "free(DAT_00159b80);" (call_expression "free(DAT_00159b80)" identifier (argument_list "(DAT_00159b80)" ( identifier ))) ;) (expression_statement "DAT_00159b80 = (void *)0x0;" (assignment_expression "DAT_00159b80 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid free_debug_memory(void)\n\n{\n  dwarf_vma **ppdVar1;\n  debug_info *pdVar2;\n  debug_info *__ptr;\n  dwarf_section_display_enum debug;\n  dwarf_section_display_enum dVar3;\n  dwarf_vma **ppdVar4;\n  \n  free_abbrevs();\n  debug = abbrev;\n  do {\n    dVar3 = debug + aranges;\n    free_debug_section(debug);\n    __ptr = debug_information;\n    debug = dVar3;\n  } while (dVar3 != max);\n  if (debug_information != (debug_info *)0x0) {\n    if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }\nLAB_00126159:\n    free(__ptr);\n    debug_information = (debug_info *)0x0;\n    num_debug_info_entries = 0;\n    alloc_num_debug_info_entries = 0;\n  }\n  if (separate_debug_file != (void *)0x0) {\n    close_debug_file(separate_debug_file);\n    separate_debug_file = (void *)0x0;\n    free(separate_debug_filename);\n    separate_debug_filename = (char *)0x0;\n  }\n  return;\n}\n\n" comment (function_definition "void free_debug_memory(void)\n\n{\n  dwarf_vma **ppdVar1;\n  debug_info *pdVar2;\n  debug_info *__ptr;\n  dwarf_section_display_enum debug;\n  dwarf_section_display_enum dVar3;\n  dwarf_vma **ppdVar4;\n  \n  free_abbrevs();\n  debug = abbrev;\n  do {\n    dVar3 = debug + aranges;\n    free_debug_section(debug);\n    __ptr = debug_information;\n    debug = dVar3;\n  } while (dVar3 != max);\n  if (debug_information != (debug_info *)0x0) {\n    if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }\nLAB_00126159:\n    free(__ptr);\n    debug_information = (debug_info *)0x0;\n    num_debug_info_entries = 0;\n    alloc_num_debug_info_entries = 0;\n  }\n  if (separate_debug_file != (void *)0x0) {\n    close_debug_file(separate_debug_file);\n    separate_debug_file = (void *)0x0;\n    free(separate_debug_filename);\n    separate_debug_filename = (char *)0x0;\n  }\n  return;\n}" primitive_type (function_declarator "free_debug_memory(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  dwarf_vma **ppdVar1;\n  debug_info *pdVar2;\n  debug_info *__ptr;\n  dwarf_section_display_enum debug;\n  dwarf_section_display_enum dVar3;\n  dwarf_vma **ppdVar4;\n  \n  free_abbrevs();\n  debug = abbrev;\n  do {\n    dVar3 = debug + aranges;\n    free_debug_section(debug);\n    __ptr = debug_information;\n    debug = dVar3;\n  } while (dVar3 != max);\n  if (debug_information != (debug_info *)0x0) {\n    if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }\nLAB_00126159:\n    free(__ptr);\n    debug_information = (debug_info *)0x0;\n    num_debug_info_entries = 0;\n    alloc_num_debug_info_entries = 0;\n  }\n  if (separate_debug_file != (void *)0x0) {\n    close_debug_file(separate_debug_file);\n    separate_debug_file = (void *)0x0;\n    free(separate_debug_filename);\n    separate_debug_filename = (char *)0x0;\n  }\n  return;\n}" { (declaration "dwarf_vma **ppdVar1;" type_identifier (pointer_declarator "**ppdVar1" * (pointer_declarator "*ppdVar1" * identifier)) ;) (declaration "debug_info *pdVar2;" type_identifier (pointer_declarator "*pdVar2" * identifier) ;) (declaration "debug_info *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "dwarf_section_display_enum debug;" type_identifier identifier ;) (declaration "dwarf_section_display_enum dVar3;" type_identifier identifier ;) (declaration "dwarf_vma **ppdVar4;" type_identifier (pointer_declarator "**ppdVar4" * (pointer_declarator "*ppdVar4" * identifier)) ;) (expression_statement "free_abbrevs();" (call_expression "free_abbrevs()" identifier (argument_list "()" ( ))) ;) (expression_statement "debug = abbrev;" (assignment_expression "debug = abbrev" identifier = identifier) ;) (do_statement "do {\n    dVar3 = debug + aranges;\n    free_debug_section(debug);\n    __ptr = debug_information;\n    debug = dVar3;\n  } while (dVar3 != max);" do (compound_statement "{\n    dVar3 = debug + aranges;\n    free_debug_section(debug);\n    __ptr = debug_information;\n    debug = dVar3;\n  }" { (expression_statement "dVar3 = debug + aranges;" (assignment_expression "dVar3 = debug + aranges" identifier = (binary_expression "debug + aranges" identifier + identifier)) ;) (expression_statement "free_debug_section(debug);" (call_expression "free_debug_section(debug)" identifier (argument_list "(debug)" ( identifier ))) ;) (expression_statement "__ptr = debug_information;" (assignment_expression "__ptr = debug_information" identifier = identifier) ;) (expression_statement "debug = dVar3;" (assignment_expression "debug = dVar3" identifier = identifier) ;) }) while (parenthesized_expression "(dVar3 != max)" ( (binary_expression "dVar3 != max" identifier != identifier) )) ;) (if_statement "if (debug_information != (debug_info *)0x0) {\n    if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }\nLAB_00126159:\n    free(__ptr);\n    debug_information = (debug_info *)0x0;\n    num_debug_info_entries = 0;\n    alloc_num_debug_info_entries = 0;\n  }" if (parenthesized_expression "(debug_information != (debug_info *)0x0)" ( (binary_expression "debug_information != (debug_info *)0x0" identifier != (cast_expression "(debug_info *)0x0" ( (type_descriptor "debug_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }\nLAB_00126159:\n    free(__ptr);\n    debug_information = (debug_info *)0x0;\n    num_debug_info_entries = 0;\n    alloc_num_debug_info_entries = 0;\n  }" { (if_statement "if (num_debug_info_entries - 1 < 0xfffffffe) {\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }" if (parenthesized_expression "(num_debug_info_entries - 1 < 0xfffffffe)" ( (binary_expression "num_debug_info_entries - 1 < 0xfffffffe" (binary_expression "num_debug_info_entries - 1" identifier - number_literal) < number_literal) )) (compound_statement "{\n      ppdVar4 = &debug_information->loc_offsets;\n      pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;\n      do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);\n    }" { (expression_statement "ppdVar4 = &debug_information->loc_offsets;" (assignment_expression "ppdVar4 = &debug_information->loc_offsets" identifier = (pointer_expression "&debug_information->loc_offsets" & (field_expression "debug_information->loc_offsets" identifier -> field_identifier))) ;) (expression_statement "pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1;" (assignment_expression "pdVar2 = debug_information + (ulong)(num_debug_info_entries - 1) + 1" identifier = (binary_expression "debug_information + (ulong)(num_debug_info_entries - 1) + 1" (binary_expression "debug_information + (ulong)(num_debug_info_entries - 1)" identifier + (call_expression "(ulong)(num_debug_info_entries - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(num_debug_info_entries - 1)" ( (binary_expression "num_debug_info_entries - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      } while (ppdVar4 != &pdVar2->loc_offsets);" do (compound_statement "{\n        while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }\n        free(*ppdVar4);\n        free(ppdVar4[2]);\n        if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;\n      }" { (while_statement "while (*(uint *)((long)ppdVar4 + 0x1c) != 0) {\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }" while (parenthesized_expression "(*(uint *)((long)ppdVar4 + 0x1c) != 0)" ( (binary_expression "*(uint *)((long)ppdVar4 + 0x1c) != 0" (pointer_expression "*(uint *)((long)ppdVar4 + 0x1c)" * (cast_expression "(uint *)((long)ppdVar4 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)ppdVar4 + 0x1c)" ( (binary_expression "(long)ppdVar4 + 0x1c" (cast_expression "(long)ppdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n          if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          ppdVar1 = ppdVar4 + 5;\n          ppdVar4 = ppdVar4 + 0xd;\n          free(*ppdVar1);\n          if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;\n        }" { (if_statement "if (*(uint *)((long)ppdVar4 + 0x34) != 0) goto LAB_0012611f;" if (parenthesized_expression "(*(uint *)((long)ppdVar4 + 0x34) != 0)" ( (binary_expression "*(uint *)((long)ppdVar4 + 0x34) != 0" (pointer_expression "*(uint *)((long)ppdVar4 + 0x34)" * (cast_expression "(uint *)((long)ppdVar4 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)ppdVar4 + 0x34)" ( (binary_expression "(long)ppdVar4 + 0x34" (cast_expression "(long)ppdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0012611f;" goto statement_identifier ;)) (labeled_statement "LAB_00126147:\n          ppdVar1 = ppdVar4 + 5;" statement_identifier : (expression_statement "ppdVar1 = ppdVar4 + 5;" (assignment_expression "ppdVar1 = ppdVar4 + 5" identifier = (binary_expression "ppdVar4 + 5" identifier + number_literal)) ;)) (expression_statement "ppdVar4 = ppdVar4 + 0xd;" (assignment_expression "ppdVar4 = ppdVar4 + 0xd" identifier = (binary_expression "ppdVar4 + 0xd" identifier + number_literal)) ;) (expression_statement "free(*ppdVar1);" (call_expression "free(*ppdVar1)" identifier (argument_list "(*ppdVar1)" ( (pointer_expression "*ppdVar1" * identifier) ))) ;) (if_statement "if (ppdVar4 == &pdVar2->loc_offsets) goto LAB_00126159;" if (parenthesized_expression "(ppdVar4 == &pdVar2->loc_offsets)" ( (binary_expression "ppdVar4 == &pdVar2->loc_offsets" identifier == (pointer_expression "&pdVar2->loc_offsets" & (field_expression "pdVar2->loc_offsets" identifier -> field_identifier))) )) (goto_statement "goto LAB_00126159;" goto statement_identifier ;)) })) (expression_statement "free(*ppdVar4);" (call_expression "free(*ppdVar4)" identifier (argument_list "(*ppdVar4)" ( (pointer_expression "*ppdVar4" * identifier) ))) ;) (expression_statement "free(ppdVar4[2]);" (call_expression "free(ppdVar4[2])" identifier (argument_list "(ppdVar4[2])" ( (subscript_expression "ppdVar4[2]" identifier [ number_literal ]) ))) ;) (if_statement "if (*(uint *)((long)ppdVar4 + 0x34) == 0) goto LAB_00126147;" if (parenthesized_expression "(*(uint *)((long)ppdVar4 + 0x34) == 0)" ( (binary_expression "*(uint *)((long)ppdVar4 + 0x34) == 0" (pointer_expression "*(uint *)((long)ppdVar4 + 0x34)" * (cast_expression "(uint *)((long)ppdVar4 + 0x34)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)ppdVar4 + 0x34)" ( (binary_expression "(long)ppdVar4 + 0x34" (cast_expression "(long)ppdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00126147;" goto statement_identifier ;)) (labeled_statement "LAB_0012611f:\n        ppdVar4 = ppdVar4 + 0xd;" statement_identifier : (expression_statement "ppdVar4 = ppdVar4 + 0xd;" (assignment_expression "ppdVar4 = ppdVar4 + 0xd" identifier = (binary_expression "ppdVar4 + 0xd" identifier + number_literal)) ;)) }) while (parenthesized_expression "(ppdVar4 != &pdVar2->loc_offsets)" ( (binary_expression "ppdVar4 != &pdVar2->loc_offsets" identifier != (pointer_expression "&pdVar2->loc_offsets" & (field_expression "pdVar2->loc_offsets" identifier -> field_identifier))) )) ;) })) (labeled_statement "LAB_00126159:\n    free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (expression_statement "debug_information = (debug_info *)0x0;" (assignment_expression "debug_information = (debug_info *)0x0" identifier = (cast_expression "(debug_info *)0x0" ( (type_descriptor "debug_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "num_debug_info_entries = 0;" (assignment_expression "num_debug_info_entries = 0" identifier = number_literal) ;) (expression_statement "alloc_num_debug_info_entries = 0;" (assignment_expression "alloc_num_debug_info_entries = 0" identifier = number_literal) ;) })) (if_statement "if (separate_debug_file != (void *)0x0) {\n    close_debug_file(separate_debug_file);\n    separate_debug_file = (void *)0x0;\n    free(separate_debug_filename);\n    separate_debug_filename = (char *)0x0;\n  }" if (parenthesized_expression "(separate_debug_file != (void *)0x0)" ( (binary_expression "separate_debug_file != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    close_debug_file(separate_debug_file);\n    separate_debug_file = (void *)0x0;\n    free(separate_debug_filename);\n    separate_debug_filename = (char *)0x0;\n  }" { (expression_statement "close_debug_file(separate_debug_file);" (call_expression "close_debug_file(separate_debug_file)" identifier (argument_list "(separate_debug_file)" ( identifier ))) ;) (expression_statement "separate_debug_file = (void *)0x0;" (assignment_expression "separate_debug_file = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "free(separate_debug_filename);" (call_expression "free(separate_debug_filename)" identifier (argument_list "(separate_debug_filename)" ( identifier ))) ;) (expression_statement "separate_debug_filename = (char *)0x0;" (assignment_expression "separate_debug_filename = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001260c0(void)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}\n\n" (function_definition "void FUN_001260c0(void)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001260c0(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (expression_statement "FUN_0010eec0();" (call_expression "FUN_0010eec0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);" do (compound_statement "{\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  }" { (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0010e270(iVar3);" (call_expression "FUN_0010e270(iVar3)" identifier (argument_list "(iVar3)" ( identifier ))) ;) (expression_statement "__ptr = DAT_00159bc8;" (assignment_expression "__ptr = DAT_00159bc8" identifier = identifier) ;) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0x2b)" ( (binary_expression "iVar4 != 0x2b" identifier != number_literal) )) ;) (if_statement "if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" if (parenthesized_expression "(DAT_00159bc8 != (void *)0x0)" ( (binary_expression "DAT_00159bc8 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" { (if_statement "if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" if (parenthesized_expression "(DAT_00159bd4 - 1U < 0xfffffffe)" ( (binary_expression "DAT_00159bd4 - 1U < 0xfffffffe" (binary_expression "DAT_00159bd4 - 1U" identifier - number_literal) < number_literal) )) (compound_statement "{\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" { (expression_statement "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);" (assignment_expression "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30)" identifier = (cast_expression "(undefined8 *)((long)DAT_00159bc8 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_00159bc8 + 0x30)" ( (binary_expression "(long)DAT_00159bc8 + 0x30" (cast_expression "(long)DAT_00159bc8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (expression_statement "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);" (assignment_expression "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" identifier = (cast_expression "(undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" ( (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98" (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68" (cast_expression "(long)DAT_00159bc8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(DAT_00159bd4 - 1U) * 0x68" (call_expression "(ulong)(DAT_00159bd4 - 1U)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_00159bd4 - 1U)" ( (binary_expression "DAT_00159bd4 - 1U" identifier - number_literal) ))) * number_literal)) + number_literal) )))) ;) (do_statement "do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);" do (compound_statement "{\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      }" { (while_statement "while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" while (parenthesized_expression "(*(int *)((long)puVar5 + 0x1c) != 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x1c) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x1c)" * (cast_expression "(int *)((long)puVar5 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x1c)" ( (binary_expression "(long)puVar5 + 0x1c" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" { (if_statement "if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;" if (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) != 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x34) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" * (cast_expression "(int *)((long)puVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x34)" ( (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0012611f;" goto statement_identifier ;)) (labeled_statement "LAB_00126147:\n          puVar1 = puVar5 + 5;" statement_identifier : (expression_statement "puVar1 = puVar5 + 5;" (assignment_expression "puVar1 = puVar5 + 5" identifier = (binary_expression "puVar5 + 5" identifier + number_literal)) ;)) (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;) (expression_statement "free((void *)*puVar1);" (call_expression "free((void *)*puVar1)" identifier (argument_list "((void *)*puVar1)" ( (cast_expression "(void *)*puVar1" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier)) ))) ;) (if_statement "if (puVar5 == puVar2) goto LAB_00126159;" if (parenthesized_expression "(puVar5 == puVar2)" ( (binary_expression "puVar5 == puVar2" identifier == identifier) )) (goto_statement "goto LAB_00126159;" goto statement_identifier ;)) })) (expression_statement "free((void *)*puVar5);" (call_expression "free((void *)*puVar5)" identifier (argument_list "((void *)*puVar5)" ( (cast_expression "(void *)*puVar5" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier)) ))) ;) (expression_statement "free((void *)puVar5[2]);" (call_expression "free((void *)puVar5[2])" identifier (argument_list "((void *)puVar5[2])" ( (cast_expression "(void *)puVar5[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[2]" identifier [ number_literal ])) ))) ;) (if_statement "if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;" if (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) == 0)" ( (binary_expression "*(int *)((long)puVar5 + 0x34) == 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" * (cast_expression "(int *)((long)puVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0x34)" ( (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_00126147;" goto statement_identifier ;)) (labeled_statement "LAB_0012611f:\n        puVar5 = puVar5 + 0xd;" statement_identifier : (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" identifier = (binary_expression "puVar5 + 0xd" identifier + number_literal)) ;)) }) while (parenthesized_expression "(puVar5 != puVar2)" ( (binary_expression "puVar5 != puVar2" identifier != identifier) )) ;) })) (labeled_statement "LAB_00126159:\n    free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (expression_statement "DAT_00159bc8 = (void *)0x0;" (assignment_expression "DAT_00159bc8 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_00159bd4 = 0;" (assignment_expression "DAT_00159bd4 = 0" identifier = number_literal) ;) (expression_statement "DAT_00159bd0 = 0;" (assignment_expression "DAT_00159bd0 = 0" identifier = number_literal) ;) })) (if_statement "if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" if (parenthesized_expression "(DAT_00159b88 != 0)" ( (binary_expression "DAT_00159b88 != 0" identifier != number_literal) )) (compound_statement "{\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" { (expression_statement "bfd_close();" (call_expression "bfd_close()" identifier (argument_list "()" ( ))) ;) (expression_statement "DAT_00159b88 = 0;" (assignment_expression "DAT_00159b88 = 0" identifier = number_literal) ;) (expression_statement "free(DAT_00159b80);" (call_expression "free(DAT_00159b80)" identifier (argument_list "(DAT_00159b80)" ( identifier ))) ;) (expression_statement "DAT_00159b80 = (void *)0x0;" (assignment_expression "DAT_00159b80 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_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 (binary_expression IDENT - LIT) < LIT) )) (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) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) + LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (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 *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (return_statement return ;) })))
(function_definition "void FUN_001260c0(void)\n\n{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001260c0(void)" (identifier "FUN_001260c0") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  undefined8 *puVar2;\n  void *__ptr;\n  int iVar3;\n  int iVar4;\n  undefined8 *puVar5;\n  \n  FUN_0010eec0();\n  iVar3 = 0;\n  do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);\n  if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }\n  if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }\n  return;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (expression_statement "FUN_0010eec0();" (call_expression "FUN_0010eec0()" (identifier "FUN_0010eec0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  } while (iVar4 != 0x2b);" (do "do") (compound_statement "{\n    iVar4 = iVar3 + 1;\n    FUN_0010e270(iVar3);\n    __ptr = DAT_00159bc8;\n    iVar3 = iVar4;\n  }" ({ "{") (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0010e270(iVar3);" (call_expression "FUN_0010e270(iVar3)" (identifier "FUN_0010e270") (argument_list "(iVar3)" (( "(") (identifier "iVar3") () ")"))) (; ";")) (expression_statement "__ptr = DAT_00159bc8;" (assignment_expression "__ptr = DAT_00159bc8" (identifier "__ptr") (= "=") (identifier "DAT_00159bc8")) (; ";")) (expression_statement "iVar3 = iVar4;" (assignment_expression "iVar3 = iVar4" (identifier "iVar3") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0x2b)" (( "(") (binary_expression "iVar4 != 0x2b" (identifier "iVar4") (!= "!=") (number_literal "0x2b")) () ")")) (; ";")) (if_statement "if (DAT_00159bc8 != (void *)0x0) {\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" (if "if") (parenthesized_expression "(DAT_00159bc8 != (void *)0x0)" (( "(") (binary_expression "DAT_00159bc8 != (void *)0x0" (identifier "DAT_00159bc8") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }\nLAB_00126159:\n    free(__ptr);\n    DAT_00159bc8 = (void *)0x0;\n    DAT_00159bd4 = 0;\n    DAT_00159bd0 = 0;\n  }" ({ "{") (if_statement "if (DAT_00159bd4 - 1U < 0xfffffffe) {\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" (if "if") (parenthesized_expression "(DAT_00159bd4 - 1U < 0xfffffffe)" (( "(") (binary_expression "DAT_00159bd4 - 1U < 0xfffffffe" (binary_expression "DAT_00159bd4 - 1U" (identifier "DAT_00159bd4") (- "-") (number_literal "1U")) (< "<") (number_literal "0xfffffffe")) () ")")) (compound_statement "{\n      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);\n      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);\n      do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);\n    }" ({ "{") (expression_statement "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);" (assignment_expression "puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)((long)DAT_00159bc8 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)DAT_00159bc8 + 0x30)" (( "(") (binary_expression "(long)DAT_00159bc8 + 0x30" (cast_expression "(long)DAT_00159bc8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00159bc8")) (+ "+") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);" (assignment_expression "puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98)" (( "(") (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98" (binary_expression "(long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68" (cast_expression "(long)DAT_00159bc8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00159bc8")) (+ "+") (binary_expression "(ulong)(DAT_00159bd4 - 1U) * 0x68" (call_expression "(ulong)(DAT_00159bd4 - 1U)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_00159bd4 - 1U)" (( "(") (binary_expression "DAT_00159bd4 - 1U" (identifier "DAT_00159bd4") (- "-") (number_literal "1U")) () ")"))) (* "*") (number_literal "0x68"))) (+ "+") (number_literal "0x98")) () ")")))) (; ";")) (do_statement "do {\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      } while (puVar5 != puVar2);" (do "do") (compound_statement "{\n        while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }\n        free((void *)*puVar5);\n        free((void *)puVar5[2]);\n        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;\nLAB_0012611f:\n        puVar5 = puVar5 + 0xd;\n      }" ({ "{") (while_statement "while (*(int *)((long)puVar5 + 0x1c) != 0) {\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" (while "while") (parenthesized_expression "(*(int *)((long)puVar5 + 0x1c) != 0)" (( "(") (binary_expression "*(int *)((long)puVar5 + 0x1c) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x1c)" (* "*") (cast_expression "(int *)((long)puVar5 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0x1c)" (( "(") (binary_expression "(long)puVar5 + 0x1c" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;\nLAB_00126147:\n          puVar1 = puVar5 + 5;\n          puVar5 = puVar5 + 0xd;\n          free((void *)*puVar1);\n          if (puVar5 == puVar2) goto LAB_00126159;\n        }" ({ "{") (if_statement "if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;" (if "if") (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) != 0)" (( "(") (binary_expression "*(int *)((long)puVar5 + 0x34) != 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" (* "*") (cast_expression "(int *)((long)puVar5 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0x34)" (( "(") (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x34")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012611f;" (goto "goto") (statement_identifier "LAB_0012611f") (; ";"))) (labeled_statement "LAB_00126147:\n          puVar1 = puVar5 + 5;" (statement_identifier "LAB_00126147") (: ":") (expression_statement "puVar1 = puVar5 + 5;" (assignment_expression "puVar1 = puVar5 + 5" (identifier "puVar1") (= "=") (binary_expression "puVar5 + 5" (identifier "puVar5") (+ "+") (number_literal "5"))) (; ";"))) (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 0xd" (identifier "puVar5") (+ "+") (number_literal "0xd"))) (; ";")) (expression_statement "free((void *)*puVar1);" (call_expression "free((void *)*puVar1)" (identifier "free") (argument_list "((void *)*puVar1)" (( "(") (cast_expression "(void *)*puVar1" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")"))) (; ";")) (if_statement "if (puVar5 == puVar2) goto LAB_00126159;" (if "if") (parenthesized_expression "(puVar5 == puVar2)" (( "(") (binary_expression "puVar5 == puVar2" (identifier "puVar5") (== "==") (identifier "puVar2")) () ")")) (goto_statement "goto LAB_00126159;" (goto "goto") (statement_identifier "LAB_00126159") (; ";"))) (} "}"))) (expression_statement "free((void *)*puVar5);" (call_expression "free((void *)*puVar5)" (identifier "free") (argument_list "((void *)*puVar5)" (( "(") (cast_expression "(void *)*puVar5" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5"))) () ")"))) (; ";")) (expression_statement "free((void *)puVar5[2]);" (call_expression "free((void *)puVar5[2])" (identifier "free") (argument_list "((void *)puVar5[2])" (( "(") (cast_expression "(void *)puVar5[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]"))) () ")"))) (; ";")) (if_statement "if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;" (if "if") (parenthesized_expression "(*(int *)((long)puVar5 + 0x34) == 0)" (( "(") (binary_expression "*(int *)((long)puVar5 + 0x34) == 0" (pointer_expression "*(int *)((long)puVar5 + 0x34)" (* "*") (cast_expression "(int *)((long)puVar5 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0x34)" (( "(") (binary_expression "(long)puVar5 + 0x34" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00126147;" (goto "goto") (statement_identifier "LAB_00126147") (; ";"))) (labeled_statement "LAB_0012611f:\n        puVar5 = puVar5 + 0xd;" (statement_identifier "LAB_0012611f") (: ":") (expression_statement "puVar5 = puVar5 + 0xd;" (assignment_expression "puVar5 = puVar5 + 0xd" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 0xd" (identifier "puVar5") (+ "+") (number_literal "0xd"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(puVar5 != puVar2)" (( "(") (binary_expression "puVar5 != puVar2" (identifier "puVar5") (!= "!=") (identifier "puVar2")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00126159:\n    free(__ptr);" (statement_identifier "LAB_00126159") (: ":") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";"))) (expression_statement "DAT_00159bc8 = (void *)0x0;" (assignment_expression "DAT_00159bc8 = (void *)0x0" (identifier "DAT_00159bc8") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "DAT_00159bd4 = 0;" (assignment_expression "DAT_00159bd4 = 0" (identifier "DAT_00159bd4") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00159bd0 = 0;" (assignment_expression "DAT_00159bd0 = 0" (identifier "DAT_00159bd0") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (DAT_00159b88 != 0) {\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" (if "if") (parenthesized_expression "(DAT_00159b88 != 0)" (( "(") (binary_expression "DAT_00159b88 != 0" (identifier "DAT_00159b88") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    bfd_close();\n    DAT_00159b88 = 0;\n    free(DAT_00159b80);\n    DAT_00159b80 = (void *)0x0;\n  }" ({ "{") (expression_statement "bfd_close();" (call_expression "bfd_close()" (identifier "bfd_close") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "DAT_00159b88 = 0;" (assignment_expression "DAT_00159b88 = 0" (identifier "DAT_00159b88") (= "=") (number_literal "0")) (; ";")) (expression_statement "free(DAT_00159b80);" (call_expression "free(DAT_00159b80)" (identifier "free") (argument_list "(DAT_00159b80)" (( "(") (identifier "DAT_00159b80") () ")"))) (; ";")) (expression_statement "DAT_00159b80 = (void *)0x0;" (assignment_expression "DAT_00159b80 = (void *)0x0" (identifier "DAT_00159b80") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  type_1 **ppdVar1;
  type_2 *pdVar2;
  type_2 *__ptr;
  type_3 var_2;
  type_3 var_5;
  type_1 **var_9;
  
  var_1();
  var_2 = abbrev;
  do {
    var_5 = var_2 + var_3;
    var_4(var_2);
    __ptr = var_7;
    var_2 = var_5;
  } while (var_5 != var_6);
  if (var_7 != (type_2 *)0x0) {
    if (var_8 - 1 < 0xfffffffe) {
      var_9 = &var_7->loc_offsets;
      pdVar2 = var_7 + (ulong)(var_8 - 1) + 1;
      do {
        while (*(type_4 *)((long)var_9 + 0x1c) != 0) {
          if (*(type_4 *)((long)var_9 + 0x34) != 0) goto LAB_0012611f;
LAB_00126147:
          ppdVar1 = var_9 + 5;
          var_9 = var_9 + 0xd;
          var_10(*ppdVar1);
          if (var_9 == &pdVar2->loc_offsets) goto LAB_00126159;
        }
        var_10(*var_9);
        var_10(var_9[2]);
        if (*(type_4 *)((long)var_9 + 0x34) == 0) goto LAB_00126147;
LAB_0012611f:
        var_9 = var_9 + 0xd;
      } while (var_9 != &pdVar2->loc_offsets);
    }
LAB_00126159:
    var_10(__ptr);
    var_7 = (type_2 *)0x0;
    var_8 = 0;
    alloc_num_debug_info_entries = 0;
  }
  if (var_11 != (void *)0x0) {
    var_12(var_11);
    var_11 = (void *)0x0;
    var_10(separate_debug_filename);
    separate_debug_filename = (char *)0x0;
  }
  return;
}


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

void MASKED(void)

{
  undefined8 *puVar1;
  undefined8 *puVar2;
  void *__ptr;
  int iVar3;
  int iVar4;
  undefined8 *puVar5;
  
  FUN_0010eec0();
  iVar3 = 0;
  do {
    iVar4 = iVar3 + 1;
    FUN_0010e270(iVar3);
    __ptr = DAT_00159bc8;
    iVar3 = iVar4;
  } while (iVar4 != 0x2b);
  if (DAT_00159bc8 != (void *)0x0) {
    if (DAT_00159bd4 - 1U < 0xfffffffe) {
      puVar5 = (undefined8 *)((long)DAT_00159bc8 + 0x30);
      puVar2 = (undefined8 *)((long)DAT_00159bc8 + (ulong)(DAT_00159bd4 - 1U) * 0x68 + 0x98);
      do {
        while (*(int *)((long)puVar5 + 0x1c) != 0) {
          if (*(int *)((long)puVar5 + 0x34) != 0) goto LAB_0012611f;
LAB_00126147:
          puVar1 = puVar5 + 5;
          puVar5 = puVar5 + 0xd;
          free((void *)*puVar1);
          if (puVar5 == puVar2) goto LAB_00126159;
        }
        free((void *)*puVar5);
        free((void *)puVar5[2]);
        if (*(int *)((long)puVar5 + 0x34) == 0) goto LAB_00126147;
LAB_0012611f:
        puVar5 = puVar5 + 0xd;
      } while (puVar5 != puVar2);
    }
LAB_00126159:
    free(__ptr);
    DAT_00159bc8 = (void *)0x0;
    DAT_00159bd4 = 0;
    DAT_00159bd0 = 0;
  }
  if (DAT_00159b88 != 0) {
    bfd_close();
    DAT_00159b88 = 0;
    free(DAT_00159b80);
    DAT_00159b80 = (void *)0x0;
  }
  return;
}

