
int display_debug_addr(dwarf_section *section,void *file)

{
  ulong uVar1;
  uchar *puVar2;
  long lVar3;
  dwarf_size_type dVar4;
  uint uVar5;
  long *__base;
  char *pcVar6;
  void *pvVar7;
  char *pcVar8;
  elf_vma value;
  dwarf_section *section_1;
  ulong uVar9;
  uint uVar10;
  ulong uVar11;
  size_t __nmemb;
  int iVar12;
  uchar *puVar13;
  long *plVar14;
  
  if (section->size == 0) {
    pcVar6 = section->name;
    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);
    printf(pcVar8,pcVar6);
    return 0;
  }
  uVar5 = load_debug_info(file);
  if (uVar5 == 0) {
    pcVar6 = section->name;
    pcVar8 = (char *)dcgettext(0,
                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
                               ,5);
    warn(pcVar8,pcVar6);
    return 0;
  }
  introduce((dwarf_section *)section->name,(int)section + 0x18,section_1);
  __base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8);
  if (num_debug_info_entries == 0) {
    pvVar7 = xmalloc(0x68);
    dVar4 = section->size;
    *__base = (long)pvVar7;
    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;
    qsort(__base,0,8,comp_addr_base);
  }
  else {
    uVar11 = 0;
    uVar5 = 0;
    __nmemb = 0;
    do {
      while( true ) {
        iVar12 = (int)uVar11;
        plVar14 = __base + __nmemb;
        uVar1 = debug_information[uVar5].addr_base;
        if (uVar1 != 0xffffffff) break;
LAB_00150f23:
        iVar12 = (int)uVar11;
        uVar5 = uVar5 + 1;
        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;
      }
      if (uVar1 < section->size) {
        *plVar14 = (long)(debug_information + uVar5);
        __nmemb = (size_t)(iVar12 + 1);
        plVar14 = __base + __nmemb;
        uVar11 = __nmemb;
        goto LAB_00150f23;
      }
      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);
      uVar9 = (ulong)uVar5;
      uVar5 = uVar5 + 1;
      warn(pcVar6,uVar1,uVar9);
    } while (uVar5 < num_debug_info_entries);
LAB_00150f8d:
    pvVar7 = xmalloc(0x68);
    *plVar14 = (long)pvVar7;
    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;
    qsort(__base,__nmemb,8,comp_addr_base);
    if (iVar12 != 0) {
      plVar14 = __base;
      do {
        uVar5 = *(uint *)*plVar14;
        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);
        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);
        uVar10 = 0;
        printf(pcVar8,pcVar6);
        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);
        printf(pcVar6);
        puVar2 = section->start;
        lVar3 = *(long *)(plVar14[1] + 0x20);
        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;
            puVar13 = puVar13 + uVar5) {
          value = (*byte_get)(puVar13,uVar5);
          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);
          uVar11 = (ulong)uVar10;
          uVar10 = uVar10 + 1;
          printf(pcVar6,uVar11);
          print_dwarf_vma(value,uVar5);
          putchar(10);
        }
        plVar14 = plVar14 + 1;
      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);
    }
  }
  putchar(10);
  free(__base);
  return 1;
}



undefined8 FUN_00150e90(long param_1,undefined8 param_2)

{
  long lVar1;
  int iVar2;
  long *__base;
  undefined8 uVar3;
  long lVar4;
  char *pcVar5;
  undefined8 uVar6;
  uint uVar7;
  uint uVar8;
  ulong uVar9;
  size_t __nmemb;
  ulong uVar10;
  long *plVar11;
  
  if (*(long *)(param_1 + 0x30) == 0) {
    uVar3 = *(undefined8 *)(param_1 + 0x10);
    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);
    printf(pcVar5,uVar3);
    return 0;
  }
  iVar2 = FUN_00150dc0(param_2);
  if (iVar2 == 0) {
    uVar3 = *(undefined8 *)(param_1 + 0x10);
    uVar6 = dcgettext(0,
                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
                      ,5);
    warn(uVar6,uVar3);
    return 0;
  }
  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);
  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);
  if (DAT_00196f14 == 0) {
    lVar4 = FUN_001594b0(0x68);
    uVar3 = *(undefined8 *)(param_1 + 0x30);
    *__base = lVar4;
    *(undefined8 *)(lVar4 + 0x20) = uVar3;
    qsort(__base,0,8,FUN_0013cdb0);
  }
  else {
    uVar10 = 0;
    __nmemb = 0;
    uVar7 = 0;
    do {
      while( true ) {
        iVar2 = (int)uVar10;
        plVar11 = __base + __nmemb;
        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;
        uVar9 = *(ulong *)(lVar4 + 0x20);
        if (uVar9 != 0xffffffff) break;
LAB_00150f23:
        iVar2 = (int)uVar10;
        uVar7 = uVar7 + 1;
        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;
      }
      if (uVar9 < *(ulong *)(param_1 + 0x30)) {
        *plVar11 = lVar4;
        __nmemb = (size_t)(iVar2 + 1);
        plVar11 = __base + __nmemb;
        uVar10 = __nmemb;
        goto LAB_00150f23;
      }
      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);
      uVar8 = uVar7 + 1;
      warn(uVar3,uVar9,uVar7);
      uVar7 = uVar8;
    } while (uVar8 < DAT_00196f14);
LAB_00150f8d:
    lVar4 = FUN_001594b0(0x68);
    *plVar11 = lVar4;
    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);
    qsort(__base,__nmemb,8,FUN_0013cdb0);
    if (iVar2 != 0) {
      plVar11 = __base;
      do {
        uVar7 = *(uint *)*plVar11;
        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);
        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);
        uVar8 = 0;
        printf(pcVar5,uVar3);
        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);
        printf(pcVar5);
        lVar4 = *(long *)(param_1 + 0x20);
        lVar1 = *(long *)(plVar11[1] + 0x20);
        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);
            uVar10 = uVar10 + uVar7) {
          uVar3 = (*DAT_00196f88)(uVar10,uVar7);
          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);
          uVar9 = (ulong)uVar8;
          uVar8 = uVar8 + 1;
          printf(pcVar5,uVar9);
          FUN_0013d4c0(uVar3,uVar7);
          putchar(10);
        }
        plVar11 = plVar11 + 1;
      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);
    }
  }
  putchar(10);
  free(__base);
  return 1;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x28
CMP qword ptr [RDI + 0x30],0x0
MOV qword ptr [RSP + 0x8],RDI
JZ 0x00151120
MOV RDI,RSI
CALL 0x00150dc0
TEST EAX,EAX
MOV RAX,qword ptr [RSP + 0x8]
JZ 0x001510e4
MOV RDI,qword ptr [RAX + 0x10]
LEA RSI,[RAX + 0x18]
CALL 0x0013ed70
MOV EAX,dword ptr [0x00196f14]
MOV ESI,0x8
LEA EDI,[RAX + 0x1]
CALL 0x001594e0
MOV qword ptr [RSP + 0x10],RAX
MOV EAX,dword ptr [0x00196f14]
TEST EAX,EAX
JZ 0x00151155
XOR R13D,R13D
XOR EBX,EBX
XOR R12D,R12D
MOV R14D,0xffffffff
JMP 0x00150f2e
MOV qword ptr [R15],RAX
MOV RAX,qword ptr [RSP + 0x10]
LEA R12D,[R13 + 0x1]
MOV R13,R12
LEA R15,[RAX + R12*0x8]
ADD EBX,0x1
CMP EBX,dword ptr [0x00196f14]
JNC 0x00150f8d
MOV EAX,EBX
MOV RCX,qword ptr [RSP + 0x10]
LEA RDX,[RAX + RAX*0x2]
LEA RDX,[RAX + RDX*0x4]
MOV RAX,qword ptr [0x00196f08]
LEA R15,[RCX + R12*0x8]
LEA RAX,[RAX + RDX*0x8]
MOV RBP,qword ptr [RAX + 0x20]
CMP RBP,R14
JZ 0x00150f23
MOV RCX,qword ptr [RSP + 0x8]
CMP RBP,qword ptr [RCX + 0x30]
JC 0x00150f10
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x17fc58]
CALL 0x00107130
MOV EDX,EBX
MOV RSI,RBP
ADD EBX,0x1
MOV RDI,RAX
XOR EAX,EAX
CALL 0x001550d0
CMP EBX,dword ptr [0x00196f14]
JC 0x00150f2e
MOV EDI,0x68
CALL 0x001594b0
MOV RCX,qword ptr [RSP + 0x8]
MOV RBX,qword ptr [RSP + 0x10]
MOV RSI,R12
MOV qword ptr [R15],RAX
MOV RDX,qword ptr [RCX + 0x30]
MOV RDI,RBX
LEA RCX,[0x13cdb0]
MOV qword ptr [RAX + 0x20],RDX
MOV EDX,0x8
CALL 0x001070d0
TEST R13D,R13D
JZ 0x001510bc
LEA EAX,[R13 + -0x1]
MOV R15,RBX
LEA RAX,[RBX + RAX*0x8 + 0x8]
MOV qword ptr [RSP + 0x18],RAX
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15]
XOR EDX,EDX
LEA RDI,[0x16a7d1]
MOV RSI,qword ptr [RAX + 0x10]
MOV EBP,dword ptr [RAX]
CALL 0x0013d1e0
MOV EDX,0x5
LEA RSI,[0x17fc90]
XOR EDI,EDI
MOV RBX,RAX
CALL 0x00107130
MOV RSI,RBX
XOR EBX,EBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00107190
MOV EDX,0x5
LEA RSI,[0x182263]
XOR EDI,EDI
CALL 0x00107130
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00107190
MOV RAX,qword ptr [RSP + 0x8]
MOV R13,qword ptr [RAX + 0x20]
MOV RAX,qword ptr [R15]
MOV R14,qword ptr [RAX + 0x20]
MOV RAX,qword ptr [R15 + 0x8]
ADD R14,R13
ADD R13,qword ptr [RAX + 0x20]
MOV EAX,EBP
MOV qword ptr [RSP],RAX
CMP R14,R13
JNC 0x001510ad
NOP
MOV RDI,R14
MOV ESI,EBP
CALL qword ptr [0x00196f88]
MOV EDX,0x5
LEA RSI,[0x182273]
XOR EDI,EDI
MOV R12,RAX
CALL 0x00107130
MOV ESI,EBX
ADD EBX,0x1
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00107190
MOV ESI,EBP
MOV RDI,R12
CALL 0x0013d4c0
MOV EDI,0xa
CALL 0x00107040
ADD R14,qword ptr [RSP]
CMP R13,R14
JA 0x00151060
ADD R15,0x8
CMP qword ptr [RSP + 0x18],R15
JNZ 0x00150fe0
MOV EDI,0xa
CALL 0x00107040
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x00107030
ADD RSP,0x28
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,qword ptr [RAX + 0x10]
MOV EDX,0x5
LEA RSI,[0x17fc00]
XOR EDI,EDI
CALL 0x00107130
MOV RDI,RAX
MOV RSI,RBX
XOR EAX,EAX
CALL 0x001550d0
ADD RSP,0x28
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,qword ptr [RDI + 0x10]
MOV EDX,0x5
LEA RSI,[0x18087b]
XOR EDI,EDI
CALL 0x00107130
MOV RDI,RAX
MOV RSI,RBX
XOR EAX,EAX
CALL 0x00107190
ADD RSP,0x28
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDI,0x68
CALL 0x001594b0
MOV RCX,qword ptr [RSP + 0x8]
MOV RDI,qword ptr [RSP + 0x10]
XOR ESI,ESI
MOV RDX,qword ptr [RCX + 0x30]
MOV qword ptr [RDI],RAX
LEA RCX,[0x13cdb0]
MOV qword ptr [RAX + 0x20],RDX
MOV EDX,0x8
CALL 0x001070d0
JMP 0x001510bc
(translation_unit "undefined8 FUN_00150e90(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00150e90(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" type_identifier (function_declarator "FUN_00150e90(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "size_t __nmemb;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (if_statement "if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x30) == 0)" ( (binary_expression "*(long *)(param_1 + 0x30) == 0" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\nThe %s section is empty.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\nThe %s section is empty.\n",5)" identifier (argument_list "(0,"\nThe %s section is empty.\n",5)" ( number_literal , (string_literal ""\nThe %s section is empty.\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" identifier (argument_list "(pcVar5,uVar3)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = FUN_00150dc0(param_2);" (assignment_expression "iVar2 = FUN_00150dc0(param_2)" identifier = (call_expression "FUN_00150dc0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);" (assignment_expression "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" identifier = (call_expression "dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" identifier (argument_list "(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" ( number_literal , (string_literal ""Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar3);" (call_expression "warn(uVar6,uVar3)" identifier (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);" (call_expression "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (binary_expression "param_1 + 0x18" identifier + number_literal) ))) ;) (expression_statement "__base = (long *)FUN_001594e0(DAT_00196f14 + 1);" (assignment_expression "__base = (long *)FUN_001594e0(DAT_00196f14 + 1)" identifier = (cast_expression "(long *)FUN_001594e0(DAT_00196f14 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001594e0(DAT_00196f14 + 1)" identifier (argument_list "(DAT_00196f14 + 1)" ( (binary_expression "DAT_00196f14 + 1" identifier + number_literal) ))))) ;) (if_statement "if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" if (parenthesized_expression "(DAT_00196f14 == 0)" ( (binary_expression "DAT_00196f14 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }" { (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" identifier = (call_expression "FUN_001594b0(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*__base = lVar4;" (assignment_expression "*__base = lVar4" (pointer_expression "*__base" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = uVar3;" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = uVar3" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "qsort(__base,0,8,FUN_0013cdb0);" (call_expression "qsort(__base,0,8,FUN_0013cdb0)" identifier (argument_list "(__base,0,8,FUN_0013cdb0)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" else (compound_statement "{\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "__nmemb = 0;" (assignment_expression "__nmemb = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);" do (compound_statement "{\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    }" { (while_statement "while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" { (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;" (assignment_expression "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68" identifier = (binary_expression "DAT_00196f08 + (ulong)uVar7 * 0x68" identifier + (binary_expression "(ulong)uVar7 * 0x68" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar9 = *(ulong *)(lVar4 + 0x20);" (assignment_expression "uVar9 = *(ulong *)(lVar4 + 0x20)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x20)" * (cast_expression "(ulong *)(lVar4 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar9 != 0xffffffff) break;" if (parenthesized_expression "(uVar9 != 0xffffffff)" ( (binary_expression "uVar9 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00150f23:\n        iVar2 = (int)uVar10;" statement_identifier : (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;" if (parenthesized_expression "(DAT_00196f14 <= uVar7)" ( (binary_expression "DAT_00196f14 <= uVar7" identifier <= identifier) )) (goto_statement "goto LAB_00150f8d;" goto statement_identifier ;)) })) (if_statement "if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" if (parenthesized_expression "(uVar9 < *(ulong *)(param_1 + 0x30))" ( (binary_expression "uVar9 < *(ulong *)(param_1 + 0x30)" identifier < (pointer_expression "*(ulong *)(param_1 + 0x30)" * (cast_expression "(ulong *)(param_1 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )) (compound_statement "{\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" { (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "__nmemb = (size_t)(iVar2 + 1);" (assignment_expression "__nmemb = (size_t)(iVar2 + 1)" identifier = (cast_expression "(size_t)(iVar2 + 1)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "uVar10 = __nmemb;" (assignment_expression "uVar10 = __nmemb" identifier = identifier) ;) (goto_statement "goto LAB_00150f23;" goto statement_identifier ;) })) (expression_statement "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier = (call_expression "dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier (argument_list "(0,"Corrupt address base (%lx) found in debug section %u\n",5)" ( number_literal , (string_literal ""Corrupt address base (%lx) found in debug section %u\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "uVar8 = uVar7 + 1;" (assignment_expression "uVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "warn(uVar3,uVar9,uVar7);" (call_expression "warn(uVar3,uVar9,uVar7)" identifier (argument_list "(uVar3,uVar9,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar8 < DAT_00196f14)" ( (binary_expression "uVar8 < DAT_00196f14" identifier < identifier) )) ;) (labeled_statement "LAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);" statement_identifier : (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" identifier = (call_expression "FUN_001594b0(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;)) (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30)" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "qsort(__base,__nmemb,8,FUN_0013cdb0);" (call_expression "qsort(__base,__nmemb,8,FUN_0013cdb0)" identifier (argument_list "(__base,__nmemb,8,FUN_0013cdb0)" ( identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" { (expression_statement "plVar11 = __base;" (assignment_expression "plVar11 = __base" identifier = identifier) ;) (do_statement "do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);" do (compound_statement "{\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      }" { (expression_statement "uVar7 = *(uint *)*plVar11;" (assignment_expression "uVar7 = *(uint *)*plVar11" identifier = (pointer_expression "*(uint *)*plVar11" * (cast_expression "(uint *)*plVar11" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier)))) ;) (expression_statement "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);" (assignment_expression "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" identifier = (call_expression "FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" identifier (argument_list "("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" ( (string_literal ""x"" " string_content ") , (pointer_expression "*(undefined8 *)((uint *)*plVar11 + 4)" * (cast_expression "(undefined8 *)((uint *)*plVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint *)*plVar11 + 4)" ( (binary_expression "(uint *)*plVar11 + 4" (cast_expression "(uint *)*plVar11" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier)) + number_literal) )))) , number_literal )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier (argument_list "(0,"  For compilation unit at offset 0x%s:\n",5)" ( number_literal , (string_literal ""  For compilation unit at offset 0x%s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" identifier (argument_list "(pcVar5,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\tIndex\tAddress\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\tIndex\tAddress\n",5)" identifier (argument_list "(0,"\tIndex\tAddress\n",5)" ( number_literal , (string_literal ""\tIndex\tAddress\n"" " escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar5);" (call_expression "printf(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x20);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x20)" identifier = (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(plVar11[1] + 0x20);" (assignment_expression "lVar1 = *(long *)(plVar11[1] + 0x20)" identifier = (pointer_expression "*(long *)(plVar11[1] + 0x20)" * (cast_expression "(long *)(plVar11[1] + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[1] + 0x20)" ( (binary_expression "plVar11[1] + 0x20" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (for_statement "for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" for ( (assignment_expression "uVar10 = *(long *)(*plVar11 + 0x20) + lVar4" identifier = (binary_expression "*(long *)(*plVar11 + 0x20) + lVar4" (pointer_expression "*(long *)(*plVar11 + 0x20)" * (cast_expression "(long *)(*plVar11 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) )))) + identifier)) ; (binary_expression "uVar10 < (ulong)(lVar4 + lVar1)" identifier < (call_expression "(ulong)(lVar4 + lVar1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar4 + lVar1)" ( (binary_expression "lVar4 + lVar1" identifier + identifier) )))) ; (assignment_expression "uVar10 = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ) (compound_statement "{\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" { (expression_statement "uVar3 = (*DAT_00196f88)(uVar10,uVar7);" (assignment_expression "uVar3 = (*DAT_00196f88)(uVar10,uVar7)" identifier = (call_expression "(*DAT_00196f88)(uVar10,uVar7)" (parenthesized_expression "(*DAT_00196f88)" ( (pointer_expression "*DAT_00196f88" * identifier) )) (argument_list "(uVar10,uVar7)" ( identifier , identifier )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5)" identifier = (cast_expression "(char *)dcgettext(0,"\t%d:\t",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\t%d:\t",5)" identifier (argument_list "(0,"\t%d:\t",5)" ( number_literal , (string_literal ""\t%d:\t"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "printf(pcVar5,uVar9);" (call_expression "printf(pcVar5,uVar9)" identifier (argument_list "(pcVar5,uVar9)" ( identifier , identifier ))) ;) (expression_statement "FUN_0013d4c0(uVar3,uVar7);" (call_expression "FUN_0013d4c0(uVar3,uVar7)" identifier (argument_list "(uVar3,uVar7)" ( identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__base + (ulong)(iVar2 - 1) + 1 != plVar11)" ( (binary_expression "__base + (ulong)(iVar2 - 1) + 1 != plVar11" (binary_expression "__base + (ulong)(iVar2 - 1) + 1" (binary_expression "__base + (ulong)(iVar2 - 1)" identifier + (call_expression "(ulong)(iVar2 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 - 1)" ( (binary_expression "iVar2 - 1" identifier - number_literal) )))) + number_literal) != identifier) )) ;) })) }))) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "int display_debug_addr(dwarf_section *section,void *file)\n\n{\n  ulong uVar1;\n  uchar *puVar2;\n  long lVar3;\n  dwarf_size_type dVar4;\n  uint uVar5;\n  long *__base;\n  char *pcVar6;\n  void *pvVar7;\n  char *pcVar8;\n  elf_vma value;\n  dwarf_section *section_1;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  size_t __nmemb;\n  int iVar12;\n  uchar *puVar13;\n  long *plVar14;\n  \n  if (section->size == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar8,pcVar6);\n    return 0;\n  }\n  uVar5 = load_debug_info(file);\n  if (uVar5 == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);\n    warn(pcVar8,pcVar6);\n    return 0;\n  }\n  introduce((dwarf_section *)section->name,(int)section + 0x18,section_1);\n  __base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8);\n  if (num_debug_info_entries == 0) {\n    pvVar7 = xmalloc(0x68);\n    dVar4 = section->size;\n    *__base = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;\n    qsort(__base,0,8,comp_addr_base);\n  }\n  else {\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}\n\n" (function_definition "int display_debug_addr(dwarf_section *section,void *file)\n\n{\n  ulong uVar1;\n  uchar *puVar2;\n  long lVar3;\n  dwarf_size_type dVar4;\n  uint uVar5;\n  long *__base;\n  char *pcVar6;\n  void *pvVar7;\n  char *pcVar8;\n  elf_vma value;\n  dwarf_section *section_1;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  size_t __nmemb;\n  int iVar12;\n  uchar *puVar13;\n  long *plVar14;\n  \n  if (section->size == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar8,pcVar6);\n    return 0;\n  }\n  uVar5 = load_debug_info(file);\n  if (uVar5 == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);\n    warn(pcVar8,pcVar6);\n    return 0;\n  }\n  introduce((dwarf_section *)section->name,(int)section + 0x18,section_1);\n  __base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8);\n  if (num_debug_info_entries == 0) {\n    pvVar7 = xmalloc(0x68);\n    dVar4 = section->size;\n    *__base = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;\n    qsort(__base,0,8,comp_addr_base);\n  }\n  else {\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" primitive_type (function_declarator "display_debug_addr(dwarf_section *section,void *file)" identifier (parameter_list "(dwarf_section *section,void *file)" ( (parameter_declaration "dwarf_section *section" type_identifier (pointer_declarator "*section" * identifier)) , (parameter_declaration "void *file" primitive_type (pointer_declarator "*file" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  uchar *puVar2;\n  long lVar3;\n  dwarf_size_type dVar4;\n  uint uVar5;\n  long *__base;\n  char *pcVar6;\n  void *pvVar7;\n  char *pcVar8;\n  elf_vma value;\n  dwarf_section *section_1;\n  ulong uVar9;\n  uint uVar10;\n  ulong uVar11;\n  size_t __nmemb;\n  int iVar12;\n  uchar *puVar13;\n  long *plVar14;\n  \n  if (section->size == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar8,pcVar6);\n    return 0;\n  }\n  uVar5 = load_debug_info(file);\n  if (uVar5 == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);\n    warn(pcVar8,pcVar6);\n    return 0;\n  }\n  introduce((dwarf_section *)section->name,(int)section + 0x18,section_1);\n  __base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8);\n  if (num_debug_info_entries == 0) {\n    pvVar7 = xmalloc(0x68);\n    dVar4 = section->size;\n    *__base = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;\n    qsort(__base,0,8,comp_addr_base);\n  }\n  else {\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "uchar *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "dwarf_size_type dVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "void *pvVar7;" primitive_type (pointer_declarator "*pvVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "elf_vma value;" type_identifier identifier ;) (declaration "dwarf_section *section_1;" type_identifier (pointer_declarator "*section_1" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "size_t __nmemb;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uchar *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long *plVar14;" (sized_type_specifier "long" long) (pointer_declarator "*plVar14" * identifier) ;) (if_statement "if (section->size == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar8,pcVar6);\n    return 0;\n  }" if (parenthesized_expression "(section->size == 0)" ( (binary_expression "section->size == 0" (field_expression "section->size" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar8,pcVar6);\n    return 0;\n  }" { (expression_statement "pcVar6 = section->name;" (assignment_expression "pcVar6 = section->name" identifier = (field_expression "section->name" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\nThe %s section is empty.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\nThe %s section is empty.\n",5)" identifier (argument_list "(0,"\nThe %s section is empty.\n",5)" ( number_literal , (string_literal ""\nThe %s section is empty.\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar8,pcVar6);" (call_expression "printf(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = load_debug_info(file);" (assignment_expression "uVar5 = load_debug_info(file)" identifier = (call_expression "load_debug_info(file)" identifier (argument_list "(file)" ( identifier )))) ;) (if_statement "if (uVar5 == 0) {\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);\n    warn(pcVar8,pcVar6);\n    return 0;\n  }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar6 = section->name;\n    pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);\n    warn(pcVar8,pcVar6);\n    return 0;\n  }" { (expression_statement "pcVar6 = section->name;" (assignment_expression "pcVar6 = section->name" identifier = (field_expression "section->name" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5)" identifier (argument_list "(0,\n                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                               ,5)" ( number_literal , (string_literal ""Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "warn(pcVar8,pcVar6);" (call_expression "warn(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "introduce((dwarf_section *)section->name,(int)section + 0x18,section_1);" (call_expression "introduce((dwarf_section *)section->name,(int)section + 0x18,section_1)" identifier (argument_list "((dwarf_section *)section->name,(int)section + 0x18,section_1)" ( (cast_expression "(dwarf_section *)section->name" ( (type_descriptor "dwarf_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "section->name" identifier -> field_identifier)) , (binary_expression "(int)section + 0x18" (cast_expression "(int)section" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , identifier ))) ;) (expression_statement "__base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8);" (assignment_expression "__base = (long *)xcalloc((ulong)(num_debug_info_entries + 1),8)" identifier = (cast_expression "(long *)xcalloc((ulong)(num_debug_info_entries + 1),8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc((ulong)(num_debug_info_entries + 1),8)" identifier (argument_list "((ulong)(num_debug_info_entries + 1),8)" ( (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 ))))) ;) (if_statement "if (num_debug_info_entries == 0) {\n    pvVar7 = xmalloc(0x68);\n    dVar4 = section->size;\n    *__base = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;\n    qsort(__base,0,8,comp_addr_base);\n  }\n  else {\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }" if (parenthesized_expression "(num_debug_info_entries == 0)" ( (binary_expression "num_debug_info_entries == 0" identifier == number_literal) )) (compound_statement "{\n    pvVar7 = xmalloc(0x68);\n    dVar4 = section->size;\n    *__base = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;\n    qsort(__base,0,8,comp_addr_base);\n  }" { (expression_statement "pvVar7 = xmalloc(0x68);" (assignment_expression "pvVar7 = xmalloc(0x68)" identifier = (call_expression "xmalloc(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;) (expression_statement "dVar4 = section->size;" (assignment_expression "dVar4 = section->size" identifier = (field_expression "section->size" identifier -> field_identifier)) ;) (expression_statement "*__base = (long)pvVar7;" (assignment_expression "*__base = (long)pvVar7" (pointer_expression "*__base" * identifier) = (cast_expression "(long)pvVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4;" (assignment_expression "*(dwarf_size_type *)((long)pvVar7 + 0x20) = dVar4" (pointer_expression "*(dwarf_size_type *)((long)pvVar7 + 0x20)" * (cast_expression "(dwarf_size_type *)((long)pvVar7 + 0x20)" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar7 + 0x20)" ( (binary_expression "(long)pvVar7 + 0x20" (cast_expression "(long)pvVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (expression_statement "qsort(__base,0,8,comp_addr_base);" (call_expression "qsort(__base,0,8,comp_addr_base)" identifier (argument_list "(__base,0,8,comp_addr_base)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }" else (compound_statement "{\n    uVar11 = 0;\n    uVar5 = 0;\n    __nmemb = 0;\n    do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);\nLAB_00150f8d:\n    pvVar7 = xmalloc(0x68);\n    *plVar14 = (long)pvVar7;\n    *(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;\n    qsort(__base,__nmemb,8,comp_addr_base);\n    if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }\n  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "__nmemb = 0;" (assignment_expression "__nmemb = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    } while (uVar5 < num_debug_info_entries);" do (compound_statement "{\n      while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }\n      if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }\n      pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar9 = (ulong)uVar5;\n      uVar5 = uVar5 + 1;\n      warn(pcVar6,uVar1,uVar9);\n    }" { (while_statement "while( true ) {\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar12 = (int)uVar11;\n        plVar14 = __base + __nmemb;\n        uVar1 = debug_information[uVar5].addr_base;\n        if (uVar1 != 0xffffffff) break;\nLAB_00150f23:\n        iVar12 = (int)uVar11;\n        uVar5 = uVar5 + 1;\n        if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;\n      }" { (expression_statement "iVar12 = (int)uVar11;" (assignment_expression "iVar12 = (int)uVar11" identifier = (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar14 = __base + __nmemb;" (assignment_expression "plVar14 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "uVar1 = debug_information[uVar5].addr_base;" (assignment_expression "uVar1 = debug_information[uVar5].addr_base" identifier = (field_expression "debug_information[uVar5].addr_base" (subscript_expression "debug_information[uVar5]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (uVar1 != 0xffffffff) break;" if (parenthesized_expression "(uVar1 != 0xffffffff)" ( (binary_expression "uVar1 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00150f23:\n        iVar12 = (int)uVar11;" statement_identifier : (expression_statement "iVar12 = (int)uVar11;" (assignment_expression "iVar12 = (int)uVar11" identifier = (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if (num_debug_info_entries <= uVar5) goto LAB_00150f8d;" if (parenthesized_expression "(num_debug_info_entries <= uVar5)" ( (binary_expression "num_debug_info_entries <= uVar5" identifier <= identifier) )) (goto_statement "goto LAB_00150f8d;" goto statement_identifier ;)) })) (if_statement "if (uVar1 < section->size) {\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }" if (parenthesized_expression "(uVar1 < section->size)" ( (binary_expression "uVar1 < section->size" identifier < (field_expression "section->size" identifier -> field_identifier)) )) (compound_statement "{\n        *plVar14 = (long)(debug_information + uVar5);\n        __nmemb = (size_t)(iVar12 + 1);\n        plVar14 = __base + __nmemb;\n        uVar11 = __nmemb;\n        goto LAB_00150f23;\n      }" { (expression_statement "*plVar14 = (long)(debug_information + uVar5);" (assignment_expression "*plVar14 = (long)(debug_information + uVar5)" (pointer_expression "*plVar14" * identifier) = (cast_expression "(long)(debug_information + uVar5)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(debug_information + uVar5)" ( (binary_expression "debug_information + uVar5" identifier + identifier) )))) ;) (expression_statement "__nmemb = (size_t)(iVar12 + 1);" (assignment_expression "__nmemb = (size_t)(iVar12 + 1)" identifier = (cast_expression "(size_t)(iVar12 + 1)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "(iVar12 + 1)" ( (binary_expression "iVar12 + 1" identifier + number_literal) )))) ;) (expression_statement "plVar14 = __base + __nmemb;" (assignment_expression "plVar14 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "uVar11 = __nmemb;" (assignment_expression "uVar11 = __nmemb" identifier = identifier) ;) (goto_statement "goto LAB_00150f23;" goto statement_identifier ;) })) (expression_statement "pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier (argument_list "(0,"Corrupt address base (%lx) found in debug section %u\n",5)" ( number_literal , (string_literal ""Corrupt address base (%lx) found in debug section %u\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar9 = (ulong)uVar5;" (assignment_expression "uVar9 = (ulong)uVar5" identifier = (cast_expression "(ulong)uVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (expression_statement "warn(pcVar6,uVar1,uVar9);" (call_expression "warn(pcVar6,uVar1,uVar9)" identifier (argument_list "(pcVar6,uVar1,uVar9)" ( identifier , identifier , identifier ))) ;) }) while (parenthesized_expression "(uVar5 < num_debug_info_entries)" ( (binary_expression "uVar5 < num_debug_info_entries" identifier < identifier) )) ;) (labeled_statement "LAB_00150f8d:\n    pvVar7 = xmalloc(0x68);" statement_identifier : (expression_statement "pvVar7 = xmalloc(0x68);" (assignment_expression "pvVar7 = xmalloc(0x68)" identifier = (call_expression "xmalloc(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;)) (expression_statement "*plVar14 = (long)pvVar7;" (assignment_expression "*plVar14 = (long)pvVar7" (pointer_expression "*plVar14" * identifier) = (cast_expression "(long)pvVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "*(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size;" (assignment_expression "*(dwarf_size_type *)((long)pvVar7 + 0x20) = section->size" (pointer_expression "*(dwarf_size_type *)((long)pvVar7 + 0x20)" * (cast_expression "(dwarf_size_type *)((long)pvVar7 + 0x20)" ( (type_descriptor "dwarf_size_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar7 + 0x20)" ( (binary_expression "(long)pvVar7 + 0x20" (cast_expression "(long)pvVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (field_expression "section->size" identifier -> field_identifier)) ;) (expression_statement "qsort(__base,__nmemb,8,comp_addr_base);" (call_expression "qsort(__base,__nmemb,8,comp_addr_base)" identifier (argument_list "(__base,__nmemb,8,comp_addr_base)" ( identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar12 != 0) {\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar14 = __base;\n      do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);\n    }" { (expression_statement "plVar14 = __base;" (assignment_expression "plVar14 = __base" identifier = identifier) ;) (do_statement "do {\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      } while (__base + (ulong)(iVar12 - 1) + 1 != plVar14);" do (compound_statement "{\n        uVar5 = *(uint *)*plVar14;\n        pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);\n        pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar10 = 0;\n        printf(pcVar8,pcVar6);\n        pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar6);\n        puVar2 = section->start;\n        lVar3 = *(long *)(plVar14[1] + 0x20);\n        for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }\n        plVar14 = plVar14 + 1;\n      }" { (expression_statement "uVar5 = *(uint *)*plVar14;" (assignment_expression "uVar5 = *(uint *)*plVar14" identifier = (pointer_expression "*(uint *)*plVar14" * (cast_expression "(uint *)*plVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar14" * identifier)))) ;) (expression_statement "pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0);" (assignment_expression "pcVar6 = dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0)" identifier = (call_expression "dwarf_vmatoa_1("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0)" identifier (argument_list "("x",*(dwarf_vma *)((uint *)*plVar14 + 4),0)" ( (string_literal ""x"" " string_content ") , (pointer_expression "*(dwarf_vma *)((uint *)*plVar14 + 4)" * (cast_expression "(dwarf_vma *)((uint *)*plVar14 + 4)" ( (type_descriptor "dwarf_vma *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint *)*plVar14 + 4)" ( (binary_expression "(uint *)*plVar14 + 4" (cast_expression "(uint *)*plVar14" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar14" * identifier)) + number_literal) )))) , number_literal )))) ;) (expression_statement "pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier (argument_list "(0,"  For compilation unit at offset 0x%s:\n",5)" ( number_literal , (string_literal ""  For compilation unit at offset 0x%s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "printf(pcVar8,pcVar6);" (call_expression "printf(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) (expression_statement "pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"\tIndex\tAddress\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\tIndex\tAddress\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\tIndex\tAddress\n",5)" identifier (argument_list "(0,"\tIndex\tAddress\n",5)" ( number_literal , (string_literal ""\tIndex\tAddress\n"" " escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar6);" (call_expression "printf(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "puVar2 = section->start;" (assignment_expression "puVar2 = section->start" identifier = (field_expression "section->start" identifier -> field_identifier)) ;) (expression_statement "lVar3 = *(long *)(plVar14[1] + 0x20);" (assignment_expression "lVar3 = *(long *)(plVar14[1] + 0x20)" identifier = (pointer_expression "*(long *)(plVar14[1] + 0x20)" * (cast_expression "(long *)(plVar14[1] + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar14[1] + 0x20)" ( (binary_expression "plVar14[1] + 0x20" (subscript_expression "plVar14[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (for_statement "for (puVar13 = puVar2 + *(long *)(*plVar14 + 0x20); puVar13 < puVar2 + lVar3;\n            puVar13 = puVar13 + uVar5) {\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }" for ( (assignment_expression "puVar13 = puVar2 + *(long *)(*plVar14 + 0x20)" identifier = (binary_expression "puVar2 + *(long *)(*plVar14 + 0x20)" identifier + (pointer_expression "*(long *)(*plVar14 + 0x20)" * (cast_expression "(long *)(*plVar14 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar14 + 0x20)" ( (binary_expression "*plVar14 + 0x20" (pointer_expression "*plVar14" * identifier) + number_literal) )))))) ; (binary_expression "puVar13 < puVar2 + lVar3" identifier < (binary_expression "puVar2 + lVar3" identifier + identifier)) ; (assignment_expression "puVar13 = puVar13 + uVar5" identifier = (binary_expression "puVar13 + uVar5" identifier + identifier)) ) (compound_statement "{\n          value = (*byte_get)(puVar13,uVar5);\n          pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar11 = (ulong)uVar10;\n          uVar10 = uVar10 + 1;\n          printf(pcVar6,uVar11);\n          print_dwarf_vma(value,uVar5);\n          putchar(10);\n        }" { (expression_statement "value = (*byte_get)(puVar13,uVar5);" (assignment_expression "value = (*byte_get)(puVar13,uVar5)" identifier = (call_expression "(*byte_get)(puVar13,uVar5)" (parenthesized_expression "(*byte_get)" ( (pointer_expression "*byte_get" * identifier) )) (argument_list "(puVar13,uVar5)" ( identifier , identifier )))) ;) (expression_statement "pcVar6 = (char *)dcgettext(0,"\t%d:\t",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"\t%d:\t",5)" identifier = (cast_expression "(char *)dcgettext(0,"\t%d:\t",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\t%d:\t",5)" identifier (argument_list "(0,"\t%d:\t",5)" ( number_literal , (string_literal ""\t%d:\t"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar11 = (ulong)uVar10;" (assignment_expression "uVar11 = (ulong)uVar10" identifier = (cast_expression "(ulong)uVar10" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "printf(pcVar6,uVar11);" (call_expression "printf(pcVar6,uVar11)" identifier (argument_list "(pcVar6,uVar11)" ( identifier , identifier ))) ;) (expression_statement "print_dwarf_vma(value,uVar5);" (call_expression "print_dwarf_vma(value,uVar5)" identifier (argument_list "(value,uVar5)" ( identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (expression_statement "plVar14 = plVar14 + 1;" (assignment_expression "plVar14 = plVar14 + 1" identifier = (binary_expression "plVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__base + (ulong)(iVar12 - 1) + 1 != plVar14)" ( (binary_expression "__base + (ulong)(iVar12 - 1) + 1 != plVar14" (binary_expression "__base + (ulong)(iVar12 - 1) + 1" (binary_expression "__base + (ulong)(iVar12 - 1)" identifier + (call_expression "(ulong)(iVar12 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar12 - 1)" ( (binary_expression "iVar12 - 1" identifier - number_literal) )))) + number_literal) != identifier) )) ;) })) }))) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined8 FUN_00150e90(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}\n\n" (function_definition "undefined8 FUN_00150e90(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" type_identifier (function_declarator "FUN_00150e90(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "size_t __nmemb;" primitive_type identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (if_statement "if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x30) == 0)" ( (binary_expression "*(long *)(param_1 + 0x30) == 0" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\nThe %s section is empty.\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\nThe %s section is empty.\n",5)" identifier (argument_list "(0,"\nThe %s section is empty.\n",5)" ( number_literal , (string_literal ""\nThe %s section is empty.\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" identifier (argument_list "(pcVar5,uVar3)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar2 = FUN_00150dc0(param_2);" (assignment_expression "iVar2 = FUN_00150dc0(param_2)" identifier = (call_expression "FUN_00150dc0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" { (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);" (assignment_expression "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" identifier = (call_expression "dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" identifier (argument_list "(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" ( number_literal , (string_literal ""Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "warn(uVar6,uVar3);" (call_expression "warn(uVar6,uVar3)" identifier (argument_list "(uVar6,uVar3)" ( identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);" (call_expression "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (binary_expression "param_1 + 0x18" identifier + number_literal) ))) ;) (expression_statement "__base = (long *)FUN_001594e0(DAT_00196f14 + 1);" (assignment_expression "__base = (long *)FUN_001594e0(DAT_00196f14 + 1)" identifier = (cast_expression "(long *)FUN_001594e0(DAT_00196f14 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001594e0(DAT_00196f14 + 1)" identifier (argument_list "(DAT_00196f14 + 1)" ( (binary_expression "DAT_00196f14 + 1" identifier + number_literal) ))))) ;) (if_statement "if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" if (parenthesized_expression "(DAT_00196f14 == 0)" ( (binary_expression "DAT_00196f14 == 0" identifier == number_literal) )) (compound_statement "{\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }" { (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" identifier = (call_expression "FUN_001594b0(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x30)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "*__base = lVar4;" (assignment_expression "*__base = lVar4" (pointer_expression "*__base" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = uVar3;" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = uVar3" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "qsort(__base,0,8,FUN_0013cdb0);" (call_expression "qsort(__base,0,8,FUN_0013cdb0)" identifier (argument_list "(__base,0,8,FUN_0013cdb0)" ( identifier , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" else (compound_statement "{\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "__nmemb = 0;" (assignment_expression "__nmemb = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);" do (compound_statement "{\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    }" { (while_statement "while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" { (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;" (assignment_expression "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68" identifier = (binary_expression "DAT_00196f08 + (ulong)uVar7 * 0x68" identifier + (binary_expression "(ulong)uVar7 * 0x68" (cast_expression "(ulong)uVar7" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar9 = *(ulong *)(lVar4 + 0x20);" (assignment_expression "uVar9 = *(ulong *)(lVar4 + 0x20)" identifier = (pointer_expression "*(ulong *)(lVar4 + 0x20)" * (cast_expression "(ulong *)(lVar4 + 0x20)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) ))))) ;) (if_statement "if (uVar9 != 0xffffffff) break;" if (parenthesized_expression "(uVar9 != 0xffffffff)" ( (binary_expression "uVar9 != 0xffffffff" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00150f23:\n        iVar2 = (int)uVar10;" statement_identifier : (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;" if (parenthesized_expression "(DAT_00196f14 <= uVar7)" ( (binary_expression "DAT_00196f14 <= uVar7" identifier <= identifier) )) (goto_statement "goto LAB_00150f8d;" goto statement_identifier ;)) })) (if_statement "if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" if (parenthesized_expression "(uVar9 < *(ulong *)(param_1 + 0x30))" ( (binary_expression "uVar9 < *(ulong *)(param_1 + 0x30)" identifier < (pointer_expression "*(ulong *)(param_1 + 0x30)" * (cast_expression "(ulong *)(param_1 + 0x30)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) )) (compound_statement "{\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" { (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "__nmemb = (size_t)(iVar2 + 1);" (assignment_expression "__nmemb = (size_t)(iVar2 + 1)" identifier = (cast_expression "(size_t)(iVar2 + 1)" ( (type_descriptor "size_t" primitive_type) ) (parenthesized_expression "(iVar2 + 1)" ( (binary_expression "iVar2 + 1" identifier + number_literal) )))) ;) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" identifier = (binary_expression "__base + __nmemb" identifier + identifier)) ;) (expression_statement "uVar10 = __nmemb;" (assignment_expression "uVar10 = __nmemb" identifier = identifier) ;) (goto_statement "goto LAB_00150f23;" goto statement_identifier ;) })) (expression_statement "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier = (call_expression "dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" identifier (argument_list "(0,"Corrupt address base (%lx) found in debug section %u\n",5)" ( number_literal , (string_literal ""Corrupt address base (%lx) found in debug section %u\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "uVar8 = uVar7 + 1;" (assignment_expression "uVar8 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "warn(uVar3,uVar9,uVar7);" (call_expression "warn(uVar3,uVar9,uVar7)" identifier (argument_list "(uVar3,uVar9,uVar7)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar8 < DAT_00196f14)" ( (binary_expression "uVar8 < DAT_00196f14" identifier < identifier) )) ;) (labeled_statement "LAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);" statement_identifier : (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" identifier = (call_expression "FUN_001594b0(0x68)" identifier (argument_list "(0x68)" ( number_literal )))) ;)) (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" * identifier) = identifier) ;) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30)" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" * (cast_expression "(undefined8 *)(lVar4 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "qsort(__base,__nmemb,8,FUN_0013cdb0);" (call_expression "qsort(__base,__nmemb,8,FUN_0013cdb0)" identifier (argument_list "(__base,__nmemb,8,FUN_0013cdb0)" ( identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" { (expression_statement "plVar11 = __base;" (assignment_expression "plVar11 = __base" identifier = identifier) ;) (do_statement "do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);" do (compound_statement "{\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      }" { (expression_statement "uVar7 = *(uint *)*plVar11;" (assignment_expression "uVar7 = *(uint *)*plVar11" identifier = (pointer_expression "*(uint *)*plVar11" * (cast_expression "(uint *)*plVar11" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier)))) ;) (expression_statement "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);" (assignment_expression "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" identifier = (call_expression "FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" identifier (argument_list "("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" ( (string_literal ""x"" " string_content ") , (pointer_expression "*(undefined8 *)((uint *)*plVar11 + 4)" * (cast_expression "(undefined8 *)((uint *)*plVar11 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint *)*plVar11 + 4)" ( (binary_expression "(uint *)*plVar11 + 4" (cast_expression "(uint *)*plVar11" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier)) + number_literal) )))) , number_literal )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" identifier (argument_list "(0,"  For compilation unit at offset 0x%s:\n",5)" ( number_literal , (string_literal ""  For compilation unit at offset 0x%s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" identifier (argument_list "(pcVar5,uVar3)" ( identifier , identifier ))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"\tIndex\tAddress\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\tIndex\tAddress\n",5)" identifier (argument_list "(0,"\tIndex\tAddress\n",5)" ( number_literal , (string_literal ""\tIndex\tAddress\n"" " escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "printf(pcVar5);" (call_expression "printf(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 0x20);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x20)" identifier = (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(plVar11[1] + 0x20);" (assignment_expression "lVar1 = *(long *)(plVar11[1] + 0x20)" identifier = (pointer_expression "*(long *)(plVar11[1] + 0x20)" * (cast_expression "(long *)(plVar11[1] + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar11[1] + 0x20)" ( (binary_expression "plVar11[1] + 0x20" (subscript_expression "plVar11[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (for_statement "for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" for ( (assignment_expression "uVar10 = *(long *)(*plVar11 + 0x20) + lVar4" identifier = (binary_expression "*(long *)(*plVar11 + 0x20) + lVar4" (pointer_expression "*(long *)(*plVar11 + 0x20)" * (cast_expression "(long *)(*plVar11 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar11 + 0x20)" ( (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" * identifier) + number_literal) )))) + identifier)) ; (binary_expression "uVar10 < (ulong)(lVar4 + lVar1)" identifier < (call_expression "(ulong)(lVar4 + lVar1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar4 + lVar1)" ( (binary_expression "lVar4 + lVar1" identifier + identifier) )))) ; (assignment_expression "uVar10 = uVar10 + uVar7" identifier = (binary_expression "uVar10 + uVar7" identifier + identifier)) ) (compound_statement "{\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" { (expression_statement "uVar3 = (*DAT_00196f88)(uVar10,uVar7);" (assignment_expression "uVar3 = (*DAT_00196f88)(uVar10,uVar7)" identifier = (call_expression "(*DAT_00196f88)(uVar10,uVar7)" (parenthesized_expression "(*DAT_00196f88)" ( (pointer_expression "*DAT_00196f88" * identifier) )) (argument_list "(uVar10,uVar7)" ( identifier , identifier )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5)" identifier = (cast_expression "(char *)dcgettext(0,"\t%d:\t",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"\t%d:\t",5)" identifier (argument_list "(0,"\t%d:\t",5)" ( number_literal , (string_literal ""\t%d:\t"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" identifier = (cast_expression "(ulong)uVar8" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "printf(pcVar5,uVar9);" (call_expression "printf(pcVar5,uVar9)" identifier (argument_list "(pcVar5,uVar9)" ( identifier , identifier ))) ;) (expression_statement "FUN_0013d4c0(uVar3,uVar7);" (call_expression "FUN_0013d4c0(uVar3,uVar7)" identifier (argument_list "(uVar3,uVar7)" ( identifier , identifier ))) ;) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) })) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(__base + (ulong)(iVar2 - 1) + 1 != plVar11)" ( (binary_expression "__base + (ulong)(iVar2 - 1) + 1 != plVar11" (binary_expression "__base + (ulong)(iVar2 - 1) + 1" (binary_expression "__base + (ulong)(iVar2 - 1)" identifier + (call_expression "(ulong)(iVar2 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar2 - 1)" ( (binary_expression "iVar2 - 1" identifier - number_literal) )))) + number_literal) != identifier) )) ;) })) }))) (expression_statement "putchar(10);" (call_expression "putchar(10)" identifier (argument_list "(10)" ( number_literal ))) ;) (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " escape_sequence string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " escape_sequence string_content escape_sequence string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + IDENT)) ; (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) ; (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT , (string_literal " escape_sequence string_content escape_sequence ") , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT) != IDENT) )) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00150e90(long param_1,undefined8 param_2)\n\n{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" (type_identifier "undefined8") (function_declarator "FUN_00150e90(long param_1,undefined8 param_2)" (identifier "FUN_00150e90") (parameter_list "(long param_1,undefined8 param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  long *__base;\n  undefined8 uVar3;\n  long lVar4;\n  char *pcVar5;\n  undefined8 uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong uVar9;\n  size_t __nmemb;\n  ulong uVar10;\n  long *plVar11;\n  \n  if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }\n  iVar2 = FUN_00150dc0(param_2);\n  if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }\n  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);\n  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);\n  if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }\n  putchar(10);\n  free(__base);\n  return 1;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long *__base;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*__base" (* "*") (identifier "__base")) (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "size_t __nmemb;" (primitive_type "size_t") (identifier "__nmemb") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x30) == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x30) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) == 0" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);\n    printf(pcVar5,uVar3);\n    return 0;\n  }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5)" (identifier "pcVar5") (= "=") (cast_expression "(char *)dcgettext(0,"\nThe %s section is empty.\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"\nThe %s section is empty.\n",5)" (identifier "dcgettext") (argument_list "(0,"\nThe %s section is empty.\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""\nThe %s section is empty.\n"" (" """) (escape_sequence "\n") (string_content "The %s section is empty.") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" (identifier "printf") (argument_list "(pcVar5,uVar3)" (( "(") (identifier "pcVar5") (, ",") (identifier "uVar3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar2 = FUN_00150dc0(param_2);" (assignment_expression "iVar2 = FUN_00150dc0(param_2)" (identifier "iVar2") (= "=") (call_expression "FUN_00150dc0(param_2)" (identifier "FUN_00150dc0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = *(undefined8 *)(param_1 + 0x10);\n    uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);\n    warn(uVar6,uVar3);\n    return 0;\n  }" ({ "{") (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5);" (assignment_expression "uVar6 = dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" (identifier "dcgettext") (argument_list "(0,\n                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"\n                      ,5)" (( "(") (number_literal "0") (, ",") (string_literal ""Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"" (" """) (string_content "Unable to load/parse the .debug_info section, so cannot interpret the %s section.") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "warn(uVar6,uVar3);" (call_expression "warn(uVar6,uVar3)" (identifier "warn") (argument_list "(uVar6,uVar3)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);" (call_expression "FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" (identifier "FUN_0013ed70") (argument_list "(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))) (; ";")) (expression_statement "__base = (long *)FUN_001594e0(DAT_00196f14 + 1);" (assignment_expression "__base = (long *)FUN_001594e0(DAT_00196f14 + 1)" (identifier "__base") (= "=") (cast_expression "(long *)FUN_001594e0(DAT_00196f14 + 1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001594e0(DAT_00196f14 + 1)" (identifier "FUN_001594e0") (argument_list "(DAT_00196f14 + 1)" (( "(") (binary_expression "DAT_00196f14 + 1" (identifier "DAT_00196f14") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (DAT_00196f14 == 0) {\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }\n  else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" (if "if") (parenthesized_expression "(DAT_00196f14 == 0)" (( "(") (binary_expression "DAT_00196f14 == 0" (identifier "DAT_00196f14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar4 = FUN_001594b0(0x68);\n    uVar3 = *(undefined8 *)(param_1 + 0x30);\n    *__base = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = uVar3;\n    qsort(__base,0,8,FUN_0013cdb0);\n  }" ({ "{") (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" (identifier "lVar4") (= "=") (call_expression "FUN_001594b0(0x68)" (identifier "FUN_001594b0") (argument_list "(0x68)" (( "(") (number_literal "0x68") () ")")))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "uVar3 = *(undefined8 *)(param_1 + 0x30)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*__base = lVar4;" (assignment_expression "*__base = lVar4" (pointer_expression "*__base" (* "*") (identifier "__base")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = uVar3;" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = uVar3" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "qsort(__base,0,8,FUN_0013cdb0);" (call_expression "qsort(__base,0,8,FUN_0013cdb0)" (identifier "qsort") (argument_list "(__base,0,8,FUN_0013cdb0)" (( "(") (identifier "__base") (, ",") (number_literal "0") (, ",") (number_literal "8") (, ",") (identifier "FUN_0013cdb0") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" (else "else") (compound_statement "{\n    uVar10 = 0;\n    __nmemb = 0;\n    uVar7 = 0;\n    do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);\nLAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);\n    *plVar11 = lVar4;\n    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);\n    qsort(__base,__nmemb,8,FUN_0013cdb0);\n    if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }\n  }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "__nmemb = 0;" (assignment_expression "__nmemb = 0" (identifier "__nmemb") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    } while (uVar8 < DAT_00196f14);" (do "do") (compound_statement "{\n      while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }\n      if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }\n      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);\n      uVar8 = uVar7 + 1;\n      warn(uVar3,uVar9,uVar7);\n      uVar7 = uVar8;\n    }" ({ "{") (while_statement "while( true ) {\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar2 = (int)uVar10;\n        plVar11 = __base + __nmemb;\n        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;\n        uVar9 = *(ulong *)(lVar4 + 0x20);\n        if (uVar9 != 0xffffffff) break;\nLAB_00150f23:\n        iVar2 = (int)uVar10;\n        uVar7 = uVar7 + 1;\n        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;\n      }" ({ "{") (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" (identifier "iVar2") (= "=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" (identifier "plVar11") (= "=") (binary_expression "__base + __nmemb" (identifier "__base") (+ "+") (identifier "__nmemb"))) (; ";")) (expression_statement "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;" (assignment_expression "lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68" (identifier "lVar4") (= "=") (binary_expression "DAT_00196f08 + (ulong)uVar7 * 0x68" (identifier "DAT_00196f08") (+ "+") (binary_expression "(ulong)uVar7 * 0x68" (cast_expression "(ulong)uVar7" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar7")) (* "*") (number_literal "0x68")))) (; ";")) (expression_statement "uVar9 = *(ulong *)(lVar4 + 0x20);" (assignment_expression "uVar9 = *(ulong *)(lVar4 + 0x20)" (identifier "uVar9") (= "=") (pointer_expression "*(ulong *)(lVar4 + 0x20)" (* "*") (cast_expression "(ulong *)(lVar4 + 0x20)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if (uVar9 != 0xffffffff) break;" (if "if") (parenthesized_expression "(uVar9 != 0xffffffff)" (( "(") (binary_expression "uVar9 != 0xffffffff" (identifier "uVar9") (!= "!=") (number_literal "0xffffffff")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00150f23:\n        iVar2 = (int)uVar10;" (statement_identifier "LAB_00150f23") (: ":") (expression_statement "iVar2 = (int)uVar10;" (assignment_expression "iVar2 = (int)uVar10" (identifier "iVar2") (= "=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";"))) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;" (if "if") (parenthesized_expression "(DAT_00196f14 <= uVar7)" (( "(") (binary_expression "DAT_00196f14 <= uVar7" (identifier "DAT_00196f14") (<= "<=") (identifier "uVar7")) () ")")) (goto_statement "goto LAB_00150f8d;" (goto "goto") (statement_identifier "LAB_00150f8d") (; ";"))) (} "}"))) (if_statement "if (uVar9 < *(ulong *)(param_1 + 0x30)) {\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" (if "if") (parenthesized_expression "(uVar9 < *(ulong *)(param_1 + 0x30))" (( "(") (binary_expression "uVar9 < *(ulong *)(param_1 + 0x30)" (identifier "uVar9") (< "<") (pointer_expression "*(ulong *)(param_1 + 0x30)" (* "*") (cast_expression "(ulong *)(param_1 + 0x30)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) () ")")) (compound_statement "{\n        *plVar11 = lVar4;\n        __nmemb = (size_t)(iVar2 + 1);\n        plVar11 = __base + __nmemb;\n        uVar10 = __nmemb;\n        goto LAB_00150f23;\n      }" ({ "{") (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "__nmemb = (size_t)(iVar2 + 1);" (assignment_expression "__nmemb = (size_t)(iVar2 + 1)" (identifier "__nmemb") (= "=") (cast_expression "(size_t)(iVar2 + 1)" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (parenthesized_expression "(iVar2 + 1)" (( "(") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "plVar11 = __base + __nmemb;" (assignment_expression "plVar11 = __base + __nmemb" (identifier "plVar11") (= "=") (binary_expression "__base + __nmemb" (identifier "__base") (+ "+") (identifier "__nmemb"))) (; ";")) (expression_statement "uVar10 = __nmemb;" (assignment_expression "uVar10 = __nmemb" (identifier "uVar10") (= "=") (identifier "__nmemb")) (; ";")) (goto_statement "goto LAB_00150f23;" (goto "goto") (statement_identifier "LAB_00150f23") (; ";")) (} "}"))) (expression_statement "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);" (assignment_expression "uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5)" (identifier "dcgettext") (argument_list "(0,"Corrupt address base (%lx) found in debug section %u\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Corrupt address base (%lx) found in debug section %u\n"" (" """) (string_content "Corrupt address base (%lx) found in debug section %u") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "uVar8 = uVar7 + 1;" (assignment_expression "uVar8 = uVar7 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "warn(uVar3,uVar9,uVar7);" (call_expression "warn(uVar3,uVar9,uVar7)" (identifier "warn") (argument_list "(uVar3,uVar9,uVar7)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar9") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" (identifier "uVar7") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar8 < DAT_00196f14)" (( "(") (binary_expression "uVar8 < DAT_00196f14" (identifier "uVar8") (< "<") (identifier "DAT_00196f14")) () ")")) (; ";")) (labeled_statement "LAB_00150f8d:\n    lVar4 = FUN_001594b0(0x68);" (statement_identifier "LAB_00150f8d") (: ":") (expression_statement "lVar4 = FUN_001594b0(0x68);" (assignment_expression "lVar4 = FUN_001594b0(0x68)" (identifier "lVar4") (= "=") (call_expression "FUN_001594b0(0x68)" (identifier "FUN_001594b0") (argument_list "(0x68)" (( "(") (number_literal "0x68") () ")")))) (; ";"))) (expression_statement "*plVar11 = lVar4;" (assignment_expression "*plVar11 = lVar4" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);" (assignment_expression "*(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30)" (pointer_expression "*(undefined8 *)(lVar4 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "qsort(__base,__nmemb,8,FUN_0013cdb0);" (call_expression "qsort(__base,__nmemb,8,FUN_0013cdb0)" (identifier "qsort") (argument_list "(__base,__nmemb,8,FUN_0013cdb0)" (( "(") (identifier "__base") (, ",") (identifier "__nmemb") (, ",") (number_literal "8") (, ",") (identifier "FUN_0013cdb0") () ")"))) (; ";")) (if_statement "if (iVar2 != 0) {\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      plVar11 = __base;\n      do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);\n    }" ({ "{") (expression_statement "plVar11 = __base;" (assignment_expression "plVar11 = __base" (identifier "plVar11") (= "=") (identifier "__base")) (; ";")) (do_statement "do {\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);" (do "do") (compound_statement "{\n        uVar7 = *(uint *)*plVar11;\n        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);\n        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);\n        uVar8 = 0;\n        printf(pcVar5,uVar3);\n        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);\n        printf(pcVar5);\n        lVar4 = *(long *)(param_1 + 0x20);\n        lVar1 = *(long *)(plVar11[1] + 0x20);\n        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }\n        plVar11 = plVar11 + 1;\n      }" ({ "{") (expression_statement "uVar7 = *(uint *)*plVar11;" (assignment_expression "uVar7 = *(uint *)*plVar11" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)*plVar11" (* "*") (cast_expression "(uint *)*plVar11" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))))) (; ";")) (expression_statement "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);" (assignment_expression "uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" (identifier "uVar3") (= "=") (call_expression "FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" (identifier "FUN_0013d1e0") (argument_list "("x",*(undefined8 *)((uint *)*plVar11 + 4),0)" (( "(") (string_literal ""x"" (" """) (string_content "x") (" """)) (, ",") (pointer_expression "*(undefined8 *)((uint *)*plVar11 + 4)" (* "*") (cast_expression "(undefined8 *)((uint *)*plVar11 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint *)*plVar11 + 4)" (( "(") (binary_expression "(uint *)*plVar11 + 4" (cast_expression "(uint *)*plVar11" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (+ "+") (number_literal "4")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" (identifier "pcVar5") (= "=") (cast_expression "(char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"  For compilation unit at offset 0x%s:\n",5)" (identifier "dcgettext") (argument_list "(0,"  For compilation unit at offset 0x%s:\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""  For compilation unit at offset 0x%s:\n"" (" """) (string_content "  For compilation unit at offset 0x%s:") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "printf(pcVar5,uVar3);" (call_expression "printf(pcVar5,uVar3)" (identifier "printf") (argument_list "(pcVar5,uVar3)" (( "(") (identifier "pcVar5") (, ",") (identifier "uVar3") () ")"))) (; ";")) (expression_statement "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5)" (identifier "pcVar5") (= "=") (cast_expression "(char *)dcgettext(0,"\tIndex\tAddress\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"\tIndex\tAddress\n",5)" (identifier "dcgettext") (argument_list "(0,"\tIndex\tAddress\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""\tIndex\tAddress\n"" (" """) (escape_sequence "\t") (string_content "Index") (escape_sequence "\t") (string_content "Address") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "printf(pcVar5);" (call_expression "printf(pcVar5)" (identifier "printf") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 0x20);" (assignment_expression "lVar4 = *(long *)(param_1 + 0x20)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "lVar1 = *(long *)(plVar11[1] + 0x20);" (assignment_expression "lVar1 = *(long *)(plVar11[1] + 0x20)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(plVar11[1] + 0x20)" (* "*") (cast_expression "(long *)(plVar11[1] + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar11[1] + 0x20)" (( "(") (binary_expression "plVar11[1] + 0x20" (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (for_statement "for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);\n            uVar10 = uVar10 + uVar7) {\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" (for "for") (( "(") (assignment_expression "uVar10 = *(long *)(*plVar11 + 0x20) + lVar4" (identifier "uVar10") (= "=") (binary_expression "*(long *)(*plVar11 + 0x20) + lVar4" (pointer_expression "*(long *)(*plVar11 + 0x20)" (* "*") (cast_expression "(long *)(*plVar11 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar11 + 0x20)" (( "(") (binary_expression "*plVar11 + 0x20" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (identifier "lVar4"))) (; ";") (binary_expression "uVar10 < (ulong)(lVar4 + lVar1)" (identifier "uVar10") (< "<") (call_expression "(ulong)(lVar4 + lVar1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar4 + lVar1)" (( "(") (binary_expression "lVar4 + lVar1" (identifier "lVar4") (+ "+") (identifier "lVar1")) () ")")))) (; ";") (assignment_expression "uVar10 = uVar10 + uVar7" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar7" (identifier "uVar10") (+ "+") (identifier "uVar7"))) () ")") (compound_statement "{\n          uVar3 = (*DAT_00196f88)(uVar10,uVar7);\n          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);\n          uVar9 = (ulong)uVar8;\n          uVar8 = uVar8 + 1;\n          printf(pcVar5,uVar9);\n          FUN_0013d4c0(uVar3,uVar7);\n          putchar(10);\n        }" ({ "{") (expression_statement "uVar3 = (*DAT_00196f88)(uVar10,uVar7);" (assignment_expression "uVar3 = (*DAT_00196f88)(uVar10,uVar7)" (identifier "uVar3") (= "=") (call_expression "(*DAT_00196f88)(uVar10,uVar7)" (parenthesized_expression "(*DAT_00196f88)" (( "(") (pointer_expression "*DAT_00196f88" (* "*") (identifier "DAT_00196f88")) () ")")) (argument_list "(uVar10,uVar7)" (( "(") (identifier "uVar10") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"\t%d:\t",5)" (identifier "pcVar5") (= "=") (cast_expression "(char *)dcgettext(0,"\t%d:\t",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext(0,"\t%d:\t",5)" (identifier "dcgettext") (argument_list "(0,"\t%d:\t",5)" (( "(") (number_literal "0") (, ",") (string_literal ""\t%d:\t"" (" """) (escape_sequence "\t") (string_content "%d:") (escape_sequence "\t") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "uVar9 = (ulong)uVar8;" (assignment_expression "uVar9 = (ulong)uVar8" (identifier "uVar9") (= "=") (cast_expression "(ulong)uVar8" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar8"))) (; ";")) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "printf(pcVar5,uVar9);" (call_expression "printf(pcVar5,uVar9)" (identifier "printf") (argument_list "(pcVar5,uVar9)" (( "(") (identifier "pcVar5") (, ",") (identifier "uVar9") () ")"))) (; ";")) (expression_statement "FUN_0013d4c0(uVar3,uVar7);" (call_expression "FUN_0013d4c0(uVar3,uVar7)" (identifier "FUN_0013d4c0") (argument_list "(uVar3,uVar7)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(__base + (ulong)(iVar2 - 1) + 1 != plVar11)" (( "(") (binary_expression "__base + (ulong)(iVar2 - 1) + 1 != plVar11" (binary_expression "__base + (ulong)(iVar2 - 1) + 1" (binary_expression "__base + (ulong)(iVar2 - 1)" (identifier "__base") (+ "+") (call_expression "(ulong)(iVar2 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar2 - 1)" (( "(") (binary_expression "iVar2 - 1" (identifier "iVar2") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1")) (!= "!=") (identifier "plVar11")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "putchar(10);" (call_expression "putchar(10)" (identifier "putchar") (argument_list "(10)" (( "(") (number_literal "10") () ")"))) (; ";")) (expression_statement "free(__base);" (call_expression "free(__base)" (identifier "free") (argument_list "(__base)" (( "(") (identifier "__base") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

int function_1(type_1 *section,void *file)

{
  type_2 var_13;
  type_3 *var_17;
  long var_19;
  type_4 dVar4;
  type_5 var_4;
  long *var_11;
  char *pcVar6;
  void *pvVar7;
  char *pcVar8;
  type_6 value;
  type_1 *section_1;
  type_2 uVar9;
  type_5 var_20;
  type_2 uVar11;
  size_t var_12;
  int var_15;
  type_3 *var_18;
  long *var_23;
  
  if (section->size == 0) {
    pcVar6 = section->name;
    pcVar8 = (char *)var_1(0,"\nThe %s section is empty.\n",5);
    var_2(pcVar8,pcVar6);
    return 0;
  }
  var_4 = var_3(file);
  if (var_4 == 0) {
    pcVar6 = section->name;
    pcVar8 = (char *)var_1(0,
                               "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
                               ,5);
    var_5(pcVar8,pcVar6);
    return 0;
  }
  var_6((type_1 *)section->name,(int)section + 0x18,section_1);
  var_11 = (long *)var_7((type_2)(var_8 + 1),8);
  if (var_8 == 0) {
    pvVar7 = var_9(0x68);
    dVar4 = section->size;
    *var_11 = (long)pvVar7;
    *(type_4 *)((long)pvVar7 + 0x20) = dVar4;
    var_10(var_11,0,8,comp_addr_base);
  }
  else {
    uVar11 = 0;
    var_4 = 0;
    var_12 = 0;
    do {
      while( true ) {
        var_15 = (int)uVar11;
        var_23 = var_11 + var_12;
        var_13 = var_14[var_4].addr_base;
        if (var_13 != 0xffffffff) break;
LAB_00150f23:
        var_15 = (int)uVar11;
        var_4 = var_4 + 1;
        if (var_8 <= var_4) goto LAB_00150f8d;
      }
      if (var_13 < section->size) {
        *var_23 = (long)(var_14 + var_4);
        var_12 = (size_t)(var_15 + 1);
        var_23 = var_11 + var_12;
        uVar11 = var_12;
        goto LAB_00150f23;
      }
      pcVar6 = (char *)var_1(0,"Corrupt address base (%lx) found in debug section %u\n",5);
      uVar9 = (type_2)var_4;
      var_4 = var_4 + 1;
      var_5(pcVar6,var_13,uVar9);
    } while (var_4 < var_8);
LAB_00150f8d:
    pvVar7 = var_9(0x68);
    *var_23 = (long)pvVar7;
    *(type_4 *)((long)pvVar7 + 0x20) = section->size;
    var_10(var_11,var_12,8,comp_addr_base);
    if (var_15 != 0) {
      var_23 = var_11;
      do {
        var_4 = *(type_5 *)*var_23;
        pcVar6 = var_16("x",*(type_7 *)((type_5 *)*var_23 + 4),0);
        pcVar8 = (char *)var_1(0,"  For compilation unit at offset 0x%s:\n",5);
        var_20 = 0;
        var_2(pcVar8,pcVar6);
        pcVar6 = (char *)var_1(0,"\tIndex\tAddress\n",5);
        var_2(pcVar6);
        var_17 = section->start;
        var_19 = *(long *)(var_23[1] + 0x20);
        for (var_18 = var_17 + *(long *)(*var_23 + 0x20); var_18 < var_17 + var_19;
            var_18 = var_18 + var_4) {
          value = (*byte_get)(var_18,var_4);
          pcVar6 = (char *)var_1(0,"\t%d:\t",5);
          uVar11 = (type_2)var_20;
          var_20 = var_20 + 1;
          var_2(pcVar6,uVar11);
          var_21(value,var_4);
          var_22(10);
        }
        var_23 = var_23 + 1;
      } while (var_11 + (type_2)(var_15 - 1) + 1 != var_23);
    }
  }
  var_22(10);
  var_24(var_11);
  return 1;
}


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

undefined8 MASKED(long param_1,undefined8 param_2)

{
  long lVar1;
  int iVar2;
  long *__base;
  undefined8 uVar3;
  long lVar4;
  char *pcVar5;
  undefined8 uVar6;
  uint uVar7;
  uint uVar8;
  ulong uVar9;
  size_t __nmemb;
  ulong uVar10;
  long *plVar11;
  
  if (*(long *)(param_1 + 0x30) == 0) {
    uVar3 = *(undefined8 *)(param_1 + 0x10);
    pcVar5 = (char *)dcgettext(0,"\nThe %s section is empty.\n",5);
    printf(pcVar5,uVar3);
    return 0;
  }
  iVar2 = FUN_00150dc0(param_2);
  if (iVar2 == 0) {
    uVar3 = *(undefined8 *)(param_1 + 0x10);
    uVar6 = dcgettext(0,
                      "Unable to load/parse the .debug_info section, so cannot interpret the %s section.\n"
                      ,5);
    warn(uVar6,uVar3);
    return 0;
  }
  FUN_0013ed70(*(undefined8 *)(param_1 + 0x10),param_1 + 0x18);
  __base = (long *)FUN_001594e0(DAT_00196f14 + 1);
  if (DAT_00196f14 == 0) {
    lVar4 = FUN_001594b0(0x68);
    uVar3 = *(undefined8 *)(param_1 + 0x30);
    *__base = lVar4;
    *(undefined8 *)(lVar4 + 0x20) = uVar3;
    qsort(__base,0,8,FUN_0013cdb0);
  }
  else {
    uVar10 = 0;
    __nmemb = 0;
    uVar7 = 0;
    do {
      while( true ) {
        iVar2 = (int)uVar10;
        plVar11 = __base + __nmemb;
        lVar4 = DAT_00196f08 + (ulong)uVar7 * 0x68;
        uVar9 = *(ulong *)(lVar4 + 0x20);
        if (uVar9 != 0xffffffff) break;
LAB_00150f23:
        iVar2 = (int)uVar10;
        uVar7 = uVar7 + 1;
        if (DAT_00196f14 <= uVar7) goto LAB_00150f8d;
      }
      if (uVar9 < *(ulong *)(param_1 + 0x30)) {
        *plVar11 = lVar4;
        __nmemb = (size_t)(iVar2 + 1);
        plVar11 = __base + __nmemb;
        uVar10 = __nmemb;
        goto LAB_00150f23;
      }
      uVar3 = dcgettext(0,"Corrupt address base (%lx) found in debug section %u\n",5);
      uVar8 = uVar7 + 1;
      warn(uVar3,uVar9,uVar7);
      uVar7 = uVar8;
    } while (uVar8 < DAT_00196f14);
LAB_00150f8d:
    lVar4 = FUN_001594b0(0x68);
    *plVar11 = lVar4;
    *(undefined8 *)(lVar4 + 0x20) = *(undefined8 *)(param_1 + 0x30);
    qsort(__base,__nmemb,8,FUN_0013cdb0);
    if (iVar2 != 0) {
      plVar11 = __base;
      do {
        uVar7 = *(uint *)*plVar11;
        uVar3 = FUN_0013d1e0("x",*(undefined8 *)((uint *)*plVar11 + 4),0);
        pcVar5 = (char *)dcgettext(0,"  For compilation unit at offset 0x%s:\n",5);
        uVar8 = 0;
        printf(pcVar5,uVar3);
        pcVar5 = (char *)dcgettext(0,"\tIndex\tAddress\n",5);
        printf(pcVar5);
        lVar4 = *(long *)(param_1 + 0x20);
        lVar1 = *(long *)(plVar11[1] + 0x20);
        for (uVar10 = *(long *)(*plVar11 + 0x20) + lVar4; uVar10 < (ulong)(lVar4 + lVar1);
            uVar10 = uVar10 + uVar7) {
          uVar3 = (*DAT_00196f88)(uVar10,uVar7);
          pcVar5 = (char *)dcgettext(0,"\t%d:\t",5);
          uVar9 = (ulong)uVar8;
          uVar8 = uVar8 + 1;
          printf(pcVar5,uVar9);
          FUN_0013d4c0(uVar3,uVar7);
          putchar(10);
        }
        plVar11 = plVar11 + 1;
      } while (__base + (ulong)(iVar2 - 1) + 1 != plVar11);
    }
  }
  putchar(10);
  free(__base);
  return 1;
}

