
uchar * process_abbrev_section(uchar *start,uchar *end)

{
  byte bVar1;
  abbrev_attr *paVar2;
  abbrev_entry *paVar3;
  abbrev_entry *paVar4;
  dwarf_vma dVar5;
  dwarf_vma dVar6;
  abbrev_entry *paVar7;
  abbrev_attr *paVar8;
  char *message;
  byte *pbVar9;
  uint *puVar10;
  dwarf_vma dVar11;
  bool bVar12;
  uint bytes_read;
  
  if (start < end) {
    do {
      puVar10 = &bytes_read;
      dVar5 = read_leb128(start,&bytes_read,0,end);
      pbVar9 = start + bytes_read;
      if (end == pbVar9) {
        return (uchar *)0x0;
      }
      if (dVar5 == 0) {
        return pbVar9;
      }
      dVar6 = read_leb128(pbVar9,puVar10,0,end);
      pbVar9 = pbVar9 + bytes_read;
      if (end == pbVar9) {
        return (uchar *)0x0;
      }
      start = pbVar9 + 1;
      bVar1 = *pbVar9;
      paVar7 = (abbrev_entry *)malloc(0x30);
      paVar3 = last_abbrev;
      paVar4 = first_abbrev;
      if (paVar7 != (abbrev_entry *)0x0) {
        bVar12 = first_abbrev != (abbrev_entry *)0x0;
        paVar7->entry = dVar5;
        paVar7->tag = dVar6;
        paVar7->children = (uint)bVar1;
        paVar7->first_attr = (abbrev_attr *)0x0;
        paVar7->last_attr = (abbrev_attr *)0x0;
        paVar7->next = (abbrev_entry *)0x0;
        paVar3 = paVar7;
        paVar4 = paVar7;
        if (bVar12) {
          last_abbrev->next = paVar7;
          paVar4 = first_abbrev;
        }
      }
      do {
        first_abbrev = paVar4;
        last_abbrev = paVar3;
        puVar10 = &bytes_read;
        dVar5 = read_leb128(start,&bytes_read,0,end);
        pbVar9 = start + bytes_read;
        if (end == pbVar9) goto LAB_00111760;
        dVar6 = read_leb128(pbVar9,puVar10,0,end);
        start = pbVar9 + bytes_read;
        if (end == start) goto LAB_00111760;
        dVar11 = 0xffffffffffffffff;
        if (dVar6 == 0x21) {
          dVar11 = read_leb128(start,puVar10,1,end);
          start = start + bytes_read;
          if (end == start) goto LAB_00111760;
        }
        paVar8 = (abbrev_attr *)malloc(0x20);
        paVar3 = last_abbrev;
        if (paVar8 != (abbrev_attr *)0x0) {
          paVar8->attribute = dVar5;
          paVar8->form = dVar6;
          paVar2 = paVar3->first_attr;
          paVar8->implicit_const = dVar11;
          paVar8->next = (abbrev_attr *)0x0;
          if (paVar2 == (abbrev_attr *)0x0) {
            paVar3->first_attr = paVar8;
          }
          else {
            paVar3->last_attr->next = paVar8;
          }
          paVar3->last_attr = paVar8;
        }
        paVar3 = last_abbrev;
        paVar4 = first_abbrev;
      } while (dVar5 != 0);
    } while (start < end);
  }
LAB_00111760:
  message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);
  error(message);
  return (uchar *)0x0;
}



byte * FUN_001115d0(byte *param_1,byte *param_2)

{
  byte bVar1;
  long *plVar2;
  long lVar3;
  long lVar4;
  byte *pbVar5;
  long *plVar6;
  long *plVar7;
  undefined8 uVar8;
  long lVar9;
  bool bVar10;
  uint local_3c [3];
  
  if (param_1 < param_2) {
    do {
      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);
      param_1 = param_1 + local_3c[0];
      if (param_2 == param_1) {
        return (byte *)0x0;
      }
      if (lVar3 == 0) {
        return param_1;
      }
      lVar4 = FUN_001114f0(param_1);
      pbVar5 = param_1 + local_3c[0];
      if (param_2 == pbVar5) {
        return (byte *)0x0;
      }
      param_1 = pbVar5 + 1;
      bVar1 = *pbVar5;
      plVar6 = (long *)malloc(0x30);
      plVar2 = DAT_00159b30;
      plVar7 = DAT_00159b38;
      if (plVar6 != (long *)0x0) {
        bVar10 = DAT_00159b38 != (long *)0x0;
        *plVar6 = lVar3;
        plVar6[1] = lVar4;
        *(uint *)(plVar6 + 2) = (uint)bVar1;
        plVar6[3] = 0;
        plVar6[4] = 0;
        plVar6[5] = 0;
        plVar2 = plVar6;
        plVar7 = plVar6;
        if (bVar10) {
          DAT_00159b30[5] = (long)plVar6;
          plVar7 = DAT_00159b38;
        }
      }
      do {
        DAT_00159b38 = plVar7;
        DAT_00159b30 = plVar2;
        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);
        param_1 = param_1 + local_3c[0];
        if (param_2 == param_1) goto LAB_00111760;
        lVar4 = FUN_001114f0(param_1);
        param_1 = param_1 + local_3c[0];
        if (param_2 == param_1) goto LAB_00111760;
        lVar9 = -1;
        if (lVar4 == 0x21) {
          lVar9 = FUN_001114f0(param_1);
          param_1 = param_1 + local_3c[0];
          if (param_2 == param_1) goto LAB_00111760;
        }
        plVar7 = (long *)malloc(0x20);
        plVar2 = DAT_00159b30;
        if (plVar7 != (long *)0x0) {
          *plVar7 = lVar3;
          plVar7[1] = lVar4;
          lVar4 = plVar2[3];
          plVar7[2] = lVar9;
          plVar7[3] = 0;
          if (lVar4 == 0) {
            plVar2[3] = (long)plVar7;
          }
          else {
            *(long **)(plVar2[4] + 0x18) = plVar7;
          }
          plVar2[4] = (long)plVar7;
        }
        plVar2 = DAT_00159b30;
        plVar7 = DAT_00159b38;
      } while (lVar3 != 0);
    } while (param_1 < param_2);
  }
LAB_00111760:
  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);
  error(uVar8);
  return (byte *)0x0;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
CMP RSI,RDI
JBE 0x00111760
MOV RBX,RDI
MOV RBP,RSI
LEA R12,[RSP + 0xc]
NOP word ptr [RAX + RAX*0x1]
MOV RDI,RBX
MOV RCX,RBP
XOR EDX,EDX
MOV RSI,R12
CALL 0x001114f0
MOV R14,RAX
MOV EAX,dword ptr [RSP + 0xc]
ADD RBX,RAX
CMP RBP,RBX
JZ 0x0011177d
TEST R14,R14
JZ 0x0011177f
MOV RCX,RBP
XOR EDX,EDX
MOV RDI,RBX
CALL 0x001114f0
MOV R15,RAX
MOV EAX,dword ptr [RSP + 0xc]
ADD RAX,RBX
CMP RBP,RAX
JZ 0x0011177d
MOV EDI,0x30
LEA RBX,[RAX + 0x1]
MOVZX R13D,byte ptr [RAX]
CALL 0x00107550
TEST RAX,RAX
JZ 0x001116f1
CMP qword ptr [0x00159b38],0x0
MOV qword ptr [RAX],R14
MOV qword ptr [RAX + 0x8],R15
MOV dword ptr [RAX + 0x10],R13D
MOV qword ptr [RAX + 0x18],0x0
MOV qword ptr [RAX + 0x20],0x0
MOV qword ptr [RAX + 0x28],0x0
JZ 0x001117b8
MOV RDX,qword ptr [0x00159b30]
MOV qword ptr [RDX + 0x28],RAX
MOV qword ptr [0x00159b30],RAX
JMP 0x001116f1
MOV EDI,0x20
CALL 0x00107550
TEST RAX,RAX
JZ 0x001116e8
MOV RDX,qword ptr [0x00159b30]
MOV qword ptr [RAX],R14
MOV qword ptr [RAX + 0x8],R15
CMP qword ptr [RDX + 0x18],0x0
MOV qword ptr [RAX + 0x10],R13
MOV qword ptr [RAX + 0x18],0x0
JZ 0x00111798
MOV RCX,qword ptr [RDX + 0x20]
MOV qword ptr [RCX + 0x18],RAX
MOV qword ptr [RDX + 0x20],RAX
TEST R14,R14
JZ 0x001117a8
MOV RDI,RBX
MOV RCX,RBP
XOR EDX,EDX
MOV RSI,R12
CALL 0x001114f0
MOV R14,RAX
MOV EAX,dword ptr [RSP + 0xc]
ADD RBX,RAX
CMP RBP,RBX
JZ 0x00111760
MOV RDI,RBX
MOV RCX,RBP
XOR EDX,EDX
CALL 0x001114f0
MOV R15,RAX
MOV EAX,dword ptr [RSP + 0xc]
ADD RBX,RAX
CMP RBP,RBX
JZ 0x00111760
MOV R13,-0x1
CMP R15,0x21
JNZ 0x001116a8
MOV RDI,RBX
MOV RCX,RBP
MOV EDX,0x1
CALL 0x001114f0
MOV R13,RAX
MOV EAX,dword ptr [RSP + 0xc]
ADD RBX,RAX
CMP RBP,RBX
JNZ 0x001116a8
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x13e960]
CALL 0x00107230
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00137490
XOR EBX,EBX
ADD RSP,0x18
MOV RAX,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [RDX + 0x18],RAX
JMP 0x001116e4
CMP RBP,RBX
JA 0x001115f8
JMP 0x00111760
MOV qword ptr [0x00159b38],RAX
JMP 0x0011169b
(translation_unit "byte * FUN_001115d0(byte *param_1,byte *param_2)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}\n\n" (function_definition "byte * FUN_001115d0(byte *param_1,byte *param_2)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" type_identifier (pointer_declarator "* FUN_001115d0(byte *param_1,byte *param_2)" * (function_declarator "FUN_001115d0(byte *param_1,byte *param_2)" identifier (parameter_list "(byte *param_1,byte *param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "uint local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (if_statement "if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" if (parenthesized_expression "(param_1 < param_2)" ( (binary_expression "param_1 < param_2" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" { (do_statement "do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);" do (compound_statement "{\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    }" { (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" identifier = (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" identifier (argument_list "(param_1,local_3c,0,param_2)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (lVar3 == 0) {\n        return param_1;\n      }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar5 = param_1 + local_3c[0];" (assignment_expression "pbVar5 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(param_2 == pbVar5)" ( (binary_expression "param_2 == pbVar5" identifier == identifier) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "plVar6 = (long *)malloc(0x30);" (assignment_expression "plVar6 = (long *)malloc(0x30)" identifier = (cast_expression "(long *)malloc(0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) (if_statement "if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" if (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" { (expression_statement "bVar10 = DAT_00159b38 != (long *)0x0;" (assignment_expression "bVar10 = DAT_00159b38 != (long *)0x0" identifier = (binary_expression "DAT_00159b38 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*plVar6 = lVar3;" (assignment_expression "*plVar6 = lVar3" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar4;" (assignment_expression "plVar6[1] = lVar4" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(plVar6 + 2) = (uint)bVar1;" (assignment_expression "*(uint *)(plVar6 + 2) = (uint)bVar1" (pointer_expression "*(uint *)(plVar6 + 2)" * (cast_expression "(uint *)(plVar6 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 2)" ( (binary_expression "plVar6 + 2" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "plVar6[3] = 0;" (assignment_expression "plVar6[3] = 0" (subscript_expression "plVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar6[4] = 0;" (assignment_expression "plVar6[4] = 0" (subscript_expression "plVar6[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar6[5] = 0;" (assignment_expression "plVar6[5] = 0" (subscript_expression "plVar6[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar2 = plVar6;" (assignment_expression "plVar2 = plVar6" identifier = identifier) ;) (expression_statement "plVar7 = plVar6;" (assignment_expression "plVar7 = plVar6" identifier = identifier) ;) (if_statement "if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" { (expression_statement "DAT_00159b30[5] = (long)plVar6;" (assignment_expression "DAT_00159b30[5] = (long)plVar6" (subscript_expression "DAT_00159b30[5]" identifier [ number_literal ]) = (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) })) })) (do_statement "do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);" do (compound_statement "{\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      }" { (expression_statement "DAT_00159b38 = plVar7;" (assignment_expression "DAT_00159b38 = plVar7" identifier = identifier) ;) (expression_statement "DAT_00159b30 = plVar2;" (assignment_expression "DAT_00159b30 = plVar2" identifier = identifier) ;) (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" identifier = (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" identifier (argument_list "(param_1,local_3c,0,param_2)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" identifier = number_literal) ;) (if_statement "if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" if (parenthesized_expression "(lVar4 == 0x21)" ( (binary_expression "lVar4 == 0x21" identifier == number_literal) )) (compound_statement "{\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" { (expression_statement "lVar9 = FUN_001114f0(param_1);" (assignment_expression "lVar9 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) })) (expression_statement "plVar7 = (long *)malloc(0x20);" (assignment_expression "plVar7 = (long *)malloc(0x20)" identifier = (cast_expression "(long *)malloc(0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (if_statement "if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" if (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" { (expression_statement "*plVar7 = lVar3;" (assignment_expression "*plVar7 = lVar3" (pointer_expression "*plVar7" * identifier) = identifier) ;) (expression_statement "plVar7[1] = lVar4;" (assignment_expression "plVar7[1] = lVar4" (subscript_expression "plVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = plVar2[3];" (assignment_expression "lVar4 = plVar2[3]" identifier = (subscript_expression "plVar2[3]" identifier [ number_literal ])) ;) (expression_statement "plVar7[2] = lVar9;" (assignment_expression "plVar7[2] = lVar9" (subscript_expression "plVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            plVar2[3] = (long)plVar7;\n          }" { (expression_statement "plVar2[3] = (long)plVar7;" (assignment_expression "plVar2[3] = (long)plVar7" (subscript_expression "plVar2[3]" identifier [ number_literal ]) = (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }) (else_clause "else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" else (compound_statement "{\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" { (expression_statement "*(long **)(plVar2[4] + 0x18) = plVar7;" (assignment_expression "*(long **)(plVar2[4] + 0x18) = plVar7" (pointer_expression "*(long **)(plVar2[4] + 0x18)" * (cast_expression "(long **)(plVar2[4] + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(plVar2[4] + 0x18)" ( (binary_expression "plVar2[4] + 0x18" (subscript_expression "plVar2[4]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) }))) (expression_statement "plVar2[4] = (long)plVar7;" (assignment_expression "plVar2[4] = (long)plVar7" (subscript_expression "plVar2[4]" identifier [ number_literal ]) = (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) })) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) }) while (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) ;) }) while (parenthesized_expression "(param_1 < param_2)" ( (binary_expression "param_1 < param_2" identifier < identifier) )) ;) })) (labeled_statement "LAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" statement_identifier : (expression_statement "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" (assignment_expression "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier = (call_expression "dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier (argument_list "(0,".debug_abbrev section not zero terminated\n",5)" ( number_literal , (string_literal "".debug_abbrev section not zero terminated\n"" " string_content escape_sequence ") , number_literal )))) ;)) (expression_statement "error(uVar8);" (call_expression "error(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "uchar * process_abbrev_section(uchar *start,uchar *end)\n\n{\n  byte bVar1;\n  abbrev_attr *paVar2;\n  abbrev_entry *paVar3;\n  abbrev_entry *paVar4;\n  dwarf_vma dVar5;\n  dwarf_vma dVar6;\n  abbrev_entry *paVar7;\n  abbrev_attr *paVar8;\n  char *message;\n  byte *pbVar9;\n  uint *puVar10;\n  dwarf_vma dVar11;\n  bool bVar12;\n  uint bytes_read;\n  \n  if (start < end) {\n    do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);\n  }\nLAB_00111760:\n  message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(message);\n  return (uchar *)0x0;\n}\n\n" (function_definition "uchar * process_abbrev_section(uchar *start,uchar *end)\n\n{\n  byte bVar1;\n  abbrev_attr *paVar2;\n  abbrev_entry *paVar3;\n  abbrev_entry *paVar4;\n  dwarf_vma dVar5;\n  dwarf_vma dVar6;\n  abbrev_entry *paVar7;\n  abbrev_attr *paVar8;\n  char *message;\n  byte *pbVar9;\n  uint *puVar10;\n  dwarf_vma dVar11;\n  bool bVar12;\n  uint bytes_read;\n  \n  if (start < end) {\n    do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);\n  }\nLAB_00111760:\n  message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(message);\n  return (uchar *)0x0;\n}" type_identifier (pointer_declarator "* process_abbrev_section(uchar *start,uchar *end)" * (function_declarator "process_abbrev_section(uchar *start,uchar *end)" identifier (parameter_list "(uchar *start,uchar *end)" ( (parameter_declaration "uchar *start" type_identifier (pointer_declarator "*start" * identifier)) , (parameter_declaration "uchar *end" type_identifier (pointer_declarator "*end" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  abbrev_attr *paVar2;\n  abbrev_entry *paVar3;\n  abbrev_entry *paVar4;\n  dwarf_vma dVar5;\n  dwarf_vma dVar6;\n  abbrev_entry *paVar7;\n  abbrev_attr *paVar8;\n  char *message;\n  byte *pbVar9;\n  uint *puVar10;\n  dwarf_vma dVar11;\n  bool bVar12;\n  uint bytes_read;\n  \n  if (start < end) {\n    do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);\n  }\nLAB_00111760:\n  message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(message);\n  return (uchar *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "abbrev_attr *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "abbrev_entry *paVar3;" type_identifier (pointer_declarator "*paVar3" * identifier) ;) (declaration "abbrev_entry *paVar4;" type_identifier (pointer_declarator "*paVar4" * identifier) ;) (declaration "dwarf_vma dVar5;" type_identifier identifier ;) (declaration "dwarf_vma dVar6;" type_identifier identifier ;) (declaration "abbrev_entry *paVar7;" type_identifier (pointer_declarator "*paVar7" * identifier) ;) (declaration "abbrev_attr *paVar8;" type_identifier (pointer_declarator "*paVar8" * identifier) ;) (declaration "char *message;" primitive_type (pointer_declarator "*message" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "dwarf_vma dVar11;" type_identifier identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "uint bytes_read;" type_identifier identifier ;) (if_statement "if (start < end) {\n    do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);\n  }" if (parenthesized_expression "(start < end)" ( (binary_expression "start < end" identifier < identifier) )) (compound_statement "{\n    do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);\n  }" { (do_statement "do {\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    } while (start < end);" do (compound_statement "{\n      puVar10 = &bytes_read;\n      dVar5 = read_leb128(start,&bytes_read,0,end);\n      pbVar9 = start + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      if (dVar5 == 0) {\n        return pbVar9;\n      }\n      dVar6 = read_leb128(pbVar9,puVar10,0,end);\n      pbVar9 = pbVar9 + bytes_read;\n      if (end == pbVar9) {\n        return (uchar *)0x0;\n      }\n      start = pbVar9 + 1;\n      bVar1 = *pbVar9;\n      paVar7 = (abbrev_entry *)malloc(0x30);\n      paVar3 = last_abbrev;\n      paVar4 = first_abbrev;\n      if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }\n      do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);\n    }" { (expression_statement "puVar10 = &bytes_read;" (assignment_expression "puVar10 = &bytes_read" identifier = (pointer_expression "&bytes_read" & identifier)) ;) (expression_statement "dVar5 = read_leb128(start,&bytes_read,0,end);" (assignment_expression "dVar5 = read_leb128(start,&bytes_read,0,end)" identifier = (call_expression "read_leb128(start,&bytes_read,0,end)" identifier (argument_list "(start,&bytes_read,0,end)" ( identifier , (pointer_expression "&bytes_read" & identifier) , number_literal , identifier )))) ;) (expression_statement "pbVar9 = start + bytes_read;" (assignment_expression "pbVar9 = start + bytes_read" identifier = (binary_expression "start + bytes_read" identifier + identifier)) ;) (if_statement "if (end == pbVar9) {\n        return (uchar *)0x0;\n      }" if (parenthesized_expression "(end == pbVar9)" ( (binary_expression "end == pbVar9" identifier == identifier) )) (compound_statement "{\n        return (uchar *)0x0;\n      }" { (return_statement "return (uchar *)0x0;" return (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (dVar5 == 0) {\n        return pbVar9;\n      }" if (parenthesized_expression "(dVar5 == 0)" ( (binary_expression "dVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        return pbVar9;\n      }" { (return_statement "return pbVar9;" return identifier ;) })) (expression_statement "dVar6 = read_leb128(pbVar9,puVar10,0,end);" (assignment_expression "dVar6 = read_leb128(pbVar9,puVar10,0,end)" identifier = (call_expression "read_leb128(pbVar9,puVar10,0,end)" identifier (argument_list "(pbVar9,puVar10,0,end)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "pbVar9 = pbVar9 + bytes_read;" (assignment_expression "pbVar9 = pbVar9 + bytes_read" identifier = (binary_expression "pbVar9 + bytes_read" identifier + identifier)) ;) (if_statement "if (end == pbVar9) {\n        return (uchar *)0x0;\n      }" if (parenthesized_expression "(end == pbVar9)" ( (binary_expression "end == pbVar9" identifier == identifier) )) (compound_statement "{\n        return (uchar *)0x0;\n      }" { (return_statement "return (uchar *)0x0;" return (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "start = pbVar9 + 1;" (assignment_expression "start = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "paVar7 = (abbrev_entry *)malloc(0x30);" (assignment_expression "paVar7 = (abbrev_entry *)malloc(0x30)" identifier = (cast_expression "(abbrev_entry *)malloc(0x30)" ( (type_descriptor "abbrev_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "paVar3 = last_abbrev;" (assignment_expression "paVar3 = last_abbrev" identifier = identifier) ;) (expression_statement "paVar4 = first_abbrev;" (assignment_expression "paVar4 = first_abbrev" identifier = identifier) ;) (if_statement "if (paVar7 != (abbrev_entry *)0x0) {\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }" if (parenthesized_expression "(paVar7 != (abbrev_entry *)0x0)" ( (binary_expression "paVar7 != (abbrev_entry *)0x0" identifier != (cast_expression "(abbrev_entry *)0x0" ( (type_descriptor "abbrev_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar12 = first_abbrev != (abbrev_entry *)0x0;\n        paVar7->entry = dVar5;\n        paVar7->tag = dVar6;\n        paVar7->children = (uint)bVar1;\n        paVar7->first_attr = (abbrev_attr *)0x0;\n        paVar7->last_attr = (abbrev_attr *)0x0;\n        paVar7->next = (abbrev_entry *)0x0;\n        paVar3 = paVar7;\n        paVar4 = paVar7;\n        if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }\n      }" { (expression_statement "bVar12 = first_abbrev != (abbrev_entry *)0x0;" (assignment_expression "bVar12 = first_abbrev != (abbrev_entry *)0x0" identifier = (binary_expression "first_abbrev != (abbrev_entry *)0x0" identifier != (cast_expression "(abbrev_entry *)0x0" ( (type_descriptor "abbrev_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "paVar7->entry = dVar5;" (assignment_expression "paVar7->entry = dVar5" (field_expression "paVar7->entry" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar7->tag = dVar6;" (assignment_expression "paVar7->tag = dVar6" (field_expression "paVar7->tag" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar7->children = (uint)bVar1;" (assignment_expression "paVar7->children = (uint)bVar1" (field_expression "paVar7->children" identifier -> field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "paVar7->first_attr = (abbrev_attr *)0x0;" (assignment_expression "paVar7->first_attr = (abbrev_attr *)0x0" (field_expression "paVar7->first_attr" identifier -> field_identifier) = (cast_expression "(abbrev_attr *)0x0" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "paVar7->last_attr = (abbrev_attr *)0x0;" (assignment_expression "paVar7->last_attr = (abbrev_attr *)0x0" (field_expression "paVar7->last_attr" identifier -> field_identifier) = (cast_expression "(abbrev_attr *)0x0" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "paVar7->next = (abbrev_entry *)0x0;" (assignment_expression "paVar7->next = (abbrev_entry *)0x0" (field_expression "paVar7->next" identifier -> field_identifier) = (cast_expression "(abbrev_entry *)0x0" ( (type_descriptor "abbrev_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "paVar3 = paVar7;" (assignment_expression "paVar3 = paVar7" identifier = identifier) ;) (expression_statement "paVar4 = paVar7;" (assignment_expression "paVar4 = paVar7" identifier = identifier) ;) (if_statement "if (bVar12) {\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }" if (parenthesized_expression "(bVar12)" ( identifier )) (compound_statement "{\n          last_abbrev->next = paVar7;\n          paVar4 = first_abbrev;\n        }" { (expression_statement "last_abbrev->next = paVar7;" (assignment_expression "last_abbrev->next = paVar7" (field_expression "last_abbrev->next" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar4 = first_abbrev;" (assignment_expression "paVar4 = first_abbrev" identifier = identifier) ;) })) })) (do_statement "do {\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      } while (dVar5 != 0);" do (compound_statement "{\n        first_abbrev = paVar4;\n        last_abbrev = paVar3;\n        puVar10 = &bytes_read;\n        dVar5 = read_leb128(start,&bytes_read,0,end);\n        pbVar9 = start + bytes_read;\n        if (end == pbVar9) goto LAB_00111760;\n        dVar6 = read_leb128(pbVar9,puVar10,0,end);\n        start = pbVar9 + bytes_read;\n        if (end == start) goto LAB_00111760;\n        dVar11 = 0xffffffffffffffff;\n        if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }\n        paVar8 = (abbrev_attr *)malloc(0x20);\n        paVar3 = last_abbrev;\n        if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }\n        paVar3 = last_abbrev;\n        paVar4 = first_abbrev;\n      }" { (expression_statement "first_abbrev = paVar4;" (assignment_expression "first_abbrev = paVar4" identifier = identifier) ;) (expression_statement "last_abbrev = paVar3;" (assignment_expression "last_abbrev = paVar3" identifier = identifier) ;) (expression_statement "puVar10 = &bytes_read;" (assignment_expression "puVar10 = &bytes_read" identifier = (pointer_expression "&bytes_read" & identifier)) ;) (expression_statement "dVar5 = read_leb128(start,&bytes_read,0,end);" (assignment_expression "dVar5 = read_leb128(start,&bytes_read,0,end)" identifier = (call_expression "read_leb128(start,&bytes_read,0,end)" identifier (argument_list "(start,&bytes_read,0,end)" ( identifier , (pointer_expression "&bytes_read" & identifier) , number_literal , identifier )))) ;) (expression_statement "pbVar9 = start + bytes_read;" (assignment_expression "pbVar9 = start + bytes_read" identifier = (binary_expression "start + bytes_read" identifier + identifier)) ;) (if_statement "if (end == pbVar9) goto LAB_00111760;" if (parenthesized_expression "(end == pbVar9)" ( (binary_expression "end == pbVar9" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "dVar6 = read_leb128(pbVar9,puVar10,0,end);" (assignment_expression "dVar6 = read_leb128(pbVar9,puVar10,0,end)" identifier = (call_expression "read_leb128(pbVar9,puVar10,0,end)" identifier (argument_list "(pbVar9,puVar10,0,end)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "start = pbVar9 + bytes_read;" (assignment_expression "start = pbVar9 + bytes_read" identifier = (binary_expression "pbVar9 + bytes_read" identifier + identifier)) ;) (if_statement "if (end == start) goto LAB_00111760;" if (parenthesized_expression "(end == start)" ( (binary_expression "end == start" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "dVar11 = 0xffffffffffffffff;" (assignment_expression "dVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (if_statement "if (dVar6 == 0x21) {\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }" if (parenthesized_expression "(dVar6 == 0x21)" ( (binary_expression "dVar6 == 0x21" identifier == number_literal) )) (compound_statement "{\n          dVar11 = read_leb128(start,puVar10,1,end);\n          start = start + bytes_read;\n          if (end == start) goto LAB_00111760;\n        }" { (expression_statement "dVar11 = read_leb128(start,puVar10,1,end);" (assignment_expression "dVar11 = read_leb128(start,puVar10,1,end)" identifier = (call_expression "read_leb128(start,puVar10,1,end)" identifier (argument_list "(start,puVar10,1,end)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "start = start + bytes_read;" (assignment_expression "start = start + bytes_read" identifier = (binary_expression "start + bytes_read" identifier + identifier)) ;) (if_statement "if (end == start) goto LAB_00111760;" if (parenthesized_expression "(end == start)" ( (binary_expression "end == start" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) })) (expression_statement "paVar8 = (abbrev_attr *)malloc(0x20);" (assignment_expression "paVar8 = (abbrev_attr *)malloc(0x20)" identifier = (cast_expression "(abbrev_attr *)malloc(0x20)" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "paVar3 = last_abbrev;" (assignment_expression "paVar3 = last_abbrev" identifier = identifier) ;) (if_statement "if (paVar8 != (abbrev_attr *)0x0) {\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }" if (parenthesized_expression "(paVar8 != (abbrev_attr *)0x0)" ( (binary_expression "paVar8 != (abbrev_attr *)0x0" identifier != (cast_expression "(abbrev_attr *)0x0" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          paVar8->attribute = dVar5;\n          paVar8->form = dVar6;\n          paVar2 = paVar3->first_attr;\n          paVar8->implicit_const = dVar11;\n          paVar8->next = (abbrev_attr *)0x0;\n          if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }\n          paVar3->last_attr = paVar8;\n        }" { (expression_statement "paVar8->attribute = dVar5;" (assignment_expression "paVar8->attribute = dVar5" (field_expression "paVar8->attribute" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar8->form = dVar6;" (assignment_expression "paVar8->form = dVar6" (field_expression "paVar8->form" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar2 = paVar3->first_attr;" (assignment_expression "paVar2 = paVar3->first_attr" identifier = (field_expression "paVar3->first_attr" identifier -> field_identifier)) ;) (expression_statement "paVar8->implicit_const = dVar11;" (assignment_expression "paVar8->implicit_const = dVar11" (field_expression "paVar8->implicit_const" identifier -> field_identifier) = identifier) ;) (expression_statement "paVar8->next = (abbrev_attr *)0x0;" (assignment_expression "paVar8->next = (abbrev_attr *)0x0" (field_expression "paVar8->next" identifier -> field_identifier) = (cast_expression "(abbrev_attr *)0x0" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (paVar2 == (abbrev_attr *)0x0) {\n            paVar3->first_attr = paVar8;\n          }\n          else {\n            paVar3->last_attr->next = paVar8;\n          }" if (parenthesized_expression "(paVar2 == (abbrev_attr *)0x0)" ( (binary_expression "paVar2 == (abbrev_attr *)0x0" identifier == (cast_expression "(abbrev_attr *)0x0" ( (type_descriptor "abbrev_attr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            paVar3->first_attr = paVar8;\n          }" { (expression_statement "paVar3->first_attr = paVar8;" (assignment_expression "paVar3->first_attr = paVar8" (field_expression "paVar3->first_attr" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n            paVar3->last_attr->next = paVar8;\n          }" else (compound_statement "{\n            paVar3->last_attr->next = paVar8;\n          }" { (expression_statement "paVar3->last_attr->next = paVar8;" (assignment_expression "paVar3->last_attr->next = paVar8" (field_expression "paVar3->last_attr->next" (field_expression "paVar3->last_attr" identifier -> field_identifier) -> field_identifier) = identifier) ;) }))) (expression_statement "paVar3->last_attr = paVar8;" (assignment_expression "paVar3->last_attr = paVar8" (field_expression "paVar3->last_attr" identifier -> field_identifier) = identifier) ;) })) (expression_statement "paVar3 = last_abbrev;" (assignment_expression "paVar3 = last_abbrev" identifier = identifier) ;) (expression_statement "paVar4 = first_abbrev;" (assignment_expression "paVar4 = first_abbrev" identifier = identifier) ;) }) while (parenthesized_expression "(dVar5 != 0)" ( (binary_expression "dVar5 != 0" identifier != number_literal) )) ;) }) while (parenthesized_expression "(start < end)" ( (binary_expression "start < end" identifier < identifier) )) ;) })) (labeled_statement "LAB_00111760:\n  message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);" statement_identifier : (expression_statement "message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5);" (assignment_expression "message = (char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier = (cast_expression "(char *)dcgettext(0,".debug_abbrev section not zero terminated\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier (argument_list "(0,".debug_abbrev section not zero terminated\n",5)" ( number_literal , (string_literal "".debug_abbrev section not zero terminated\n"" " string_content escape_sequence ") , number_literal ))))) ;)) (expression_statement "error(message);" (call_expression "error(message)" identifier (argument_list "(message)" ( identifier ))) ;) (return_statement "return (uchar *)0x0;" return (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "byte * FUN_001115d0(byte *param_1,byte *param_2)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}\n\n" (function_definition "byte * FUN_001115d0(byte *param_1,byte *param_2)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" type_identifier (pointer_declarator "* FUN_001115d0(byte *param_1,byte *param_2)" * (function_declarator "FUN_001115d0(byte *param_1,byte *param_2)" identifier (parameter_list "(byte *param_1,byte *param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "uint local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (if_statement "if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" if (parenthesized_expression "(param_1 < param_2)" ( (binary_expression "param_1 < param_2" identifier < identifier) )) (compound_statement "{\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" { (do_statement "do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);" do (compound_statement "{\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    }" { (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" identifier = (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" identifier (argument_list "(param_1,local_3c,0,param_2)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (lVar3 == 0) {\n        return param_1;\n      }" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        return param_1;\n      }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "pbVar5 = param_1 + local_3c[0];" (assignment_expression "pbVar5 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }" if (parenthesized_expression "(param_2 == pbVar5)" ( (binary_expression "param_2 == pbVar5" identifier == identifier) )) (compound_statement "{\n        return (byte *)0x0;\n      }" { (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (expression_statement "plVar6 = (long *)malloc(0x30);" (assignment_expression "plVar6 = (long *)malloc(0x30)" identifier = (cast_expression "(long *)malloc(0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) (if_statement "if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" if (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" { (expression_statement "bVar10 = DAT_00159b38 != (long *)0x0;" (assignment_expression "bVar10 = DAT_00159b38 != (long *)0x0" identifier = (binary_expression "DAT_00159b38 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "*plVar6 = lVar3;" (assignment_expression "*plVar6 = lVar3" (pointer_expression "*plVar6" * identifier) = identifier) ;) (expression_statement "plVar6[1] = lVar4;" (assignment_expression "plVar6[1] = lVar4" (subscript_expression "plVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(plVar6 + 2) = (uint)bVar1;" (assignment_expression "*(uint *)(plVar6 + 2) = (uint)bVar1" (pointer_expression "*(uint *)(plVar6 + 2)" * (cast_expression "(uint *)(plVar6 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar6 + 2)" ( (binary_expression "plVar6 + 2" identifier + number_literal) )))) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "plVar6[3] = 0;" (assignment_expression "plVar6[3] = 0" (subscript_expression "plVar6[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar6[4] = 0;" (assignment_expression "plVar6[4] = 0" (subscript_expression "plVar6[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar6[5] = 0;" (assignment_expression "plVar6[5] = 0" (subscript_expression "plVar6[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "plVar2 = plVar6;" (assignment_expression "plVar2 = plVar6" identifier = identifier) ;) (expression_statement "plVar7 = plVar6;" (assignment_expression "plVar7 = plVar6" identifier = identifier) ;) (if_statement "if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" { (expression_statement "DAT_00159b30[5] = (long)plVar6;" (assignment_expression "DAT_00159b30[5] = (long)plVar6" (subscript_expression "DAT_00159b30[5]" identifier [ number_literal ]) = (cast_expression "(long)plVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) })) })) (do_statement "do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);" do (compound_statement "{\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      }" { (expression_statement "DAT_00159b38 = plVar7;" (assignment_expression "DAT_00159b38 = plVar7" identifier = identifier) ;) (expression_statement "DAT_00159b30 = plVar2;" (assignment_expression "DAT_00159b30 = plVar2" identifier = identifier) ;) (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" identifier = (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" identifier (argument_list "(param_1,local_3c,0,param_2)" ( identifier , identifier , number_literal , identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" identifier = number_literal) ;) (if_statement "if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" if (parenthesized_expression "(lVar4 == 0x21)" ( (binary_expression "lVar4 == 0x21" identifier == number_literal) )) (compound_statement "{\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" { (expression_statement "lVar9 = FUN_001114f0(param_1);" (assignment_expression "lVar9 = FUN_001114f0(param_1)" identifier = (call_expression "FUN_001114f0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" identifier = (binary_expression "param_1 + local_3c[0]" identifier + (subscript_expression "local_3c[0]" identifier [ number_literal ]))) ;) (if_statement "if (param_2 == param_1) goto LAB_00111760;" if (parenthesized_expression "(param_2 == param_1)" ( (binary_expression "param_2 == param_1" identifier == identifier) )) (goto_statement "goto LAB_00111760;" goto statement_identifier ;)) })) (expression_statement "plVar7 = (long *)malloc(0x20);" (assignment_expression "plVar7 = (long *)malloc(0x20)" identifier = (cast_expression "(long *)malloc(0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x20)" identifier (argument_list "(0x20)" ( number_literal ))))) ;) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (if_statement "if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" if (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" { (expression_statement "*plVar7 = lVar3;" (assignment_expression "*plVar7 = lVar3" (pointer_expression "*plVar7" * identifier) = identifier) ;) (expression_statement "plVar7[1] = lVar4;" (assignment_expression "plVar7[1] = lVar4" (subscript_expression "plVar7[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "lVar4 = plVar2[3];" (assignment_expression "lVar4 = plVar2[3]" identifier = (subscript_expression "plVar2[3]" identifier [ number_literal ])) ;) (expression_statement "plVar7[2] = lVar9;" (assignment_expression "plVar7[2] = lVar9" (subscript_expression "plVar7[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            plVar2[3] = (long)plVar7;\n          }" { (expression_statement "plVar2[3] = (long)plVar7;" (assignment_expression "plVar2[3] = (long)plVar7" (subscript_expression "plVar2[3]" identifier [ number_literal ]) = (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) }) (else_clause "else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" else (compound_statement "{\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" { (expression_statement "*(long **)(plVar2[4] + 0x18) = plVar7;" (assignment_expression "*(long **)(plVar2[4] + 0x18) = plVar7" (pointer_expression "*(long **)(plVar2[4] + 0x18)" * (cast_expression "(long **)(plVar2[4] + 0x18)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(plVar2[4] + 0x18)" ( (binary_expression "plVar2[4] + 0x18" (subscript_expression "plVar2[4]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) }))) (expression_statement "plVar2[4] = (long)plVar7;" (assignment_expression "plVar2[4] = (long)plVar7" (subscript_expression "plVar2[4]" identifier [ number_literal ]) = (cast_expression "(long)plVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) })) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" identifier = identifier) ;) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" identifier = identifier) ;) }) while (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) )) ;) }) while (parenthesized_expression "(param_1 < param_2)" ( (binary_expression "param_1 < param_2" identifier < identifier) )) ;) })) (labeled_statement "LAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" statement_identifier : (expression_statement "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" (assignment_expression "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier = (call_expression "dcgettext(0,".debug_abbrev section not zero terminated\n",5)" identifier (argument_list "(0,".debug_abbrev section not zero terminated\n",5)" ( number_literal , (string_literal "".debug_abbrev section not zero terminated\n"" " string_content escape_sequence ") , number_literal )))) ;)) (expression_statement "error(uVar8);" (call_expression "error(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))) ;) (return_statement "return (byte *)0x0;" return (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = IDENT) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (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 ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })))
(function_definition "byte * FUN_001115d0(byte *param_1,byte *param_2)\n\n{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" (type_identifier "byte") (pointer_declarator "* FUN_001115d0(byte *param_1,byte *param_2)" (* "*") (function_declarator "FUN_001115d0(byte *param_1,byte *param_2)" (identifier "FUN_001115d0") (parameter_list "(byte *param_1,byte *param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  long *plVar2;\n  long lVar3;\n  long lVar4;\n  byte *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  undefined8 uVar8;\n  long lVar9;\n  bool bVar10;\n  uint local_3c [3];\n  \n  if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }\nLAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);\n  error(uVar8);\n  return (byte *)0x0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "uint local_3c [3];" (type_identifier "uint") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (if_statement "if (param_1 < param_2) {\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" (if "if") (parenthesized_expression "(param_1 < param_2)" (( "(") (binary_expression "param_1 < param_2" (identifier "param_1") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);\n  }" ({ "{") (do_statement "do {\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    } while (param_1 < param_2);" (do "do") (compound_statement "{\n      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n      param_1 = param_1 + local_3c[0];\n      if (param_2 == param_1) {\n        return (byte *)0x0;\n      }\n      if (lVar3 == 0) {\n        return param_1;\n      }\n      lVar4 = FUN_001114f0(param_1);\n      pbVar5 = param_1 + local_3c[0];\n      if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }\n      param_1 = pbVar5 + 1;\n      bVar1 = *pbVar5;\n      plVar6 = (long *)malloc(0x30);\n      plVar2 = DAT_00159b30;\n      plVar7 = DAT_00159b38;\n      if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }\n      do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);\n    }" ({ "{") (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" (identifier "lVar3") (= "=") (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" (identifier "FUN_001114f0") (argument_list "(param_1,local_3c,0,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "local_3c") (, ",") (number_literal "0") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" (identifier "param_1") (= "=") (binary_expression "param_1 + local_3c[0]" (identifier "param_1") (+ "+") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (param_2 == param_1) {\n        return (byte *)0x0;\n      }" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (compound_statement "{\n        return (byte *)0x0;\n      }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (lVar3 == 0) {\n        return param_1;\n      }" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return param_1;\n      }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" (identifier "lVar4") (= "=") (call_expression "FUN_001114f0(param_1)" (identifier "FUN_001114f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "pbVar5 = param_1 + local_3c[0];" (assignment_expression "pbVar5 = param_1 + local_3c[0]" (identifier "pbVar5") (= "=") (binary_expression "param_1 + local_3c[0]" (identifier "param_1") (+ "+") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (param_2 == pbVar5) {\n        return (byte *)0x0;\n      }" (if "if") (parenthesized_expression "(param_2 == pbVar5)" (( "(") (binary_expression "param_2 == pbVar5" (identifier "param_2") (== "==") (identifier "pbVar5")) () ")")) (compound_statement "{\n        return (byte *)0x0;\n      }" ({ "{") (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" (identifier "param_1") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *pbVar5;" (assignment_expression "bVar1 = *pbVar5" (identifier "bVar1") (= "=") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "plVar6 = (long *)malloc(0x30);" (assignment_expression "plVar6 = (long *)malloc(0x30)" (identifier "plVar6") (= "=") (cast_expression "(long *)malloc(0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x30)" (identifier "malloc") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")"))))) (; ";")) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" (identifier "plVar2") (= "=") (identifier "DAT_00159b30")) (; ";")) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" (identifier "plVar7") (= "=") (identifier "DAT_00159b38")) (; ";")) (if_statement "if (plVar6 != (long *)0x0) {\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" (if "if") (parenthesized_expression "(plVar6 != (long *)0x0)" (( "(") (binary_expression "plVar6 != (long *)0x0" (identifier "plVar6") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        bVar10 = DAT_00159b38 != (long *)0x0;\n        *plVar6 = lVar3;\n        plVar6[1] = lVar4;\n        *(uint *)(plVar6 + 2) = (uint)bVar1;\n        plVar6[3] = 0;\n        plVar6[4] = 0;\n        plVar6[5] = 0;\n        plVar2 = plVar6;\n        plVar7 = plVar6;\n        if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }\n      }" ({ "{") (expression_statement "bVar10 = DAT_00159b38 != (long *)0x0;" (assignment_expression "bVar10 = DAT_00159b38 != (long *)0x0" (identifier "bVar10") (= "=") (binary_expression "DAT_00159b38 != (long *)0x0" (identifier "DAT_00159b38") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (expression_statement "*plVar6 = lVar3;" (assignment_expression "*plVar6 = lVar3" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "plVar6[1] = lVar4;" (assignment_expression "plVar6[1] = lVar4" (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "*(uint *)(plVar6 + 2) = (uint)bVar1;" (assignment_expression "*(uint *)(plVar6 + 2) = (uint)bVar1" (pointer_expression "*(uint *)(plVar6 + 2)" (* "*") (cast_expression "(uint *)(plVar6 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar6 + 2)" (( "(") (binary_expression "plVar6 + 2" (identifier "plVar6") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "plVar6[3] = 0;" (assignment_expression "plVar6[3] = 0" (subscript_expression "plVar6[3]" (identifier "plVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar6[4] = 0;" (assignment_expression "plVar6[4] = 0" (subscript_expression "plVar6[4]" (identifier "plVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar6[5] = 0;" (assignment_expression "plVar6[5] = 0" (subscript_expression "plVar6[5]" (identifier "plVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar2 = plVar6;" (assignment_expression "plVar2 = plVar6" (identifier "plVar2") (= "=") (identifier "plVar6")) (; ";")) (expression_statement "plVar7 = plVar6;" (assignment_expression "plVar7 = plVar6" (identifier "plVar7") (= "=") (identifier "plVar6")) (; ";")) (if_statement "if (bVar10) {\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n          DAT_00159b30[5] = (long)plVar6;\n          plVar7 = DAT_00159b38;\n        }" ({ "{") (expression_statement "DAT_00159b30[5] = (long)plVar6;" (assignment_expression "DAT_00159b30[5] = (long)plVar6" (subscript_expression "DAT_00159b30[5]" (identifier "DAT_00159b30") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(long)plVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar6"))) (; ";")) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" (identifier "plVar7") (= "=") (identifier "DAT_00159b38")) (; ";")) (} "}"))) (} "}"))) (do_statement "do {\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      } while (lVar3 != 0);" (do "do") (compound_statement "{\n        DAT_00159b38 = plVar7;\n        DAT_00159b30 = plVar2;\n        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar4 = FUN_001114f0(param_1);\n        param_1 = param_1 + local_3c[0];\n        if (param_2 == param_1) goto LAB_00111760;\n        lVar9 = -1;\n        if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }\n        plVar7 = (long *)malloc(0x20);\n        plVar2 = DAT_00159b30;\n        if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }\n        plVar2 = DAT_00159b30;\n        plVar7 = DAT_00159b38;\n      }" ({ "{") (expression_statement "DAT_00159b38 = plVar7;" (assignment_expression "DAT_00159b38 = plVar7" (identifier "DAT_00159b38") (= "=") (identifier "plVar7")) (; ";")) (expression_statement "DAT_00159b30 = plVar2;" (assignment_expression "DAT_00159b30 = plVar2" (identifier "DAT_00159b30") (= "=") (identifier "plVar2")) (; ";")) (expression_statement "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);" (assignment_expression "lVar3 = FUN_001114f0(param_1,local_3c,0,param_2)" (identifier "lVar3") (= "=") (call_expression "FUN_001114f0(param_1,local_3c,0,param_2)" (identifier "FUN_001114f0") (argument_list "(param_1,local_3c,0,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "local_3c") (, ",") (number_literal "0") (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" (identifier "param_1") (= "=") (binary_expression "param_1 + local_3c[0]" (identifier "param_1") (+ "+") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (param_2 == param_1) goto LAB_00111760;" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_00111760;" (goto "goto") (statement_identifier "LAB_00111760") (; ";"))) (expression_statement "lVar4 = FUN_001114f0(param_1);" (assignment_expression "lVar4 = FUN_001114f0(param_1)" (identifier "lVar4") (= "=") (call_expression "FUN_001114f0(param_1)" (identifier "FUN_001114f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" (identifier "param_1") (= "=") (binary_expression "param_1 + local_3c[0]" (identifier "param_1") (+ "+") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (param_2 == param_1) goto LAB_00111760;" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_00111760;" (goto "goto") (statement_identifier "LAB_00111760") (; ";"))) (expression_statement "lVar9 = -1;" (assignment_expression "lVar9 = -1" (identifier "lVar9") (= "=") (number_literal "-1")) (; ";")) (if_statement "if (lVar4 == 0x21) {\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" (if "if") (parenthesized_expression "(lVar4 == 0x21)" (( "(") (binary_expression "lVar4 == 0x21" (identifier "lVar4") (== "==") (number_literal "0x21")) () ")")) (compound_statement "{\n          lVar9 = FUN_001114f0(param_1);\n          param_1 = param_1 + local_3c[0];\n          if (param_2 == param_1) goto LAB_00111760;\n        }" ({ "{") (expression_statement "lVar9 = FUN_001114f0(param_1);" (assignment_expression "lVar9 = FUN_001114f0(param_1)" (identifier "lVar9") (= "=") (call_expression "FUN_001114f0(param_1)" (identifier "FUN_001114f0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "param_1 = param_1 + local_3c[0];" (assignment_expression "param_1 = param_1 + local_3c[0]" (identifier "param_1") (= "=") (binary_expression "param_1 + local_3c[0]" (identifier "param_1") (+ "+") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (param_2 == param_1) goto LAB_00111760;" (if "if") (parenthesized_expression "(param_2 == param_1)" (( "(") (binary_expression "param_2 == param_1" (identifier "param_2") (== "==") (identifier "param_1")) () ")")) (goto_statement "goto LAB_00111760;" (goto "goto") (statement_identifier "LAB_00111760") (; ";"))) (} "}"))) (expression_statement "plVar7 = (long *)malloc(0x20);" (assignment_expression "plVar7 = (long *)malloc(0x20)" (identifier "plVar7") (= "=") (cast_expression "(long *)malloc(0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x20)" (identifier "malloc") (argument_list "(0x20)" (( "(") (number_literal "0x20") () ")"))))) (; ";")) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" (identifier "plVar2") (= "=") (identifier "DAT_00159b30")) (; ";")) (if_statement "if (plVar7 != (long *)0x0) {\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" (if "if") (parenthesized_expression "(plVar7 != (long *)0x0)" (( "(") (binary_expression "plVar7 != (long *)0x0" (identifier "plVar7") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          *plVar7 = lVar3;\n          plVar7[1] = lVar4;\n          lVar4 = plVar2[3];\n          plVar7[2] = lVar9;\n          plVar7[3] = 0;\n          if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }\n          plVar2[4] = (long)plVar7;\n        }" ({ "{") (expression_statement "*plVar7 = lVar3;" (assignment_expression "*plVar7 = lVar3" (pointer_expression "*plVar7" (* "*") (identifier "plVar7")) (= "=") (identifier "lVar3")) (; ";")) (expression_statement "plVar7[1] = lVar4;" (assignment_expression "plVar7[1] = lVar4" (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "lVar4 = plVar2[3];" (assignment_expression "lVar4 = plVar2[3]" (identifier "lVar4") (= "=") (subscript_expression "plVar2[3]" (identifier "plVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "plVar7[2] = lVar9;" (assignment_expression "plVar7[2] = lVar9" (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "lVar9")) (; ";")) (expression_statement "plVar7[3] = 0;" (assignment_expression "plVar7[3] = 0" (subscript_expression "plVar7[3]" (identifier "plVar7") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar4 == 0) {\n            plVar2[3] = (long)plVar7;\n          }\n          else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            plVar2[3] = (long)plVar7;\n          }" ({ "{") (expression_statement "plVar2[3] = (long)plVar7;" (assignment_expression "plVar2[3] = (long)plVar7" (subscript_expression "plVar2[3]" (identifier "plVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7"))) (; ";")) (} "}")) (else_clause "else {\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" (else "else") (compound_statement "{\n            *(long **)(plVar2[4] + 0x18) = plVar7;\n          }" ({ "{") (expression_statement "*(long **)(plVar2[4] + 0x18) = plVar7;" (assignment_expression "*(long **)(plVar2[4] + 0x18) = plVar7" (pointer_expression "*(long **)(plVar2[4] + 0x18)" (* "*") (cast_expression "(long **)(plVar2[4] + 0x18)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(plVar2[4] + 0x18)" (( "(") (binary_expression "plVar2[4] + 0x18" (subscript_expression "plVar2[4]" (identifier "plVar2") ([ "[") (number_literal "4") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (identifier "plVar7")) (; ";")) (} "}")))) (expression_statement "plVar2[4] = (long)plVar7;" (assignment_expression "plVar2[4] = (long)plVar7" (subscript_expression "plVar2[4]" (identifier "plVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)plVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar7"))) (; ";")) (} "}"))) (expression_statement "plVar2 = DAT_00159b30;" (assignment_expression "plVar2 = DAT_00159b30" (identifier "plVar2") (= "=") (identifier "DAT_00159b30")) (; ";")) (expression_statement "plVar7 = DAT_00159b38;" (assignment_expression "plVar7 = DAT_00159b38" (identifier "plVar7") (= "=") (identifier "DAT_00159b38")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_1 < param_2)" (( "(") (binary_expression "param_1 < param_2" (identifier "param_1") (< "<") (identifier "param_2")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00111760:\n  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" (statement_identifier "LAB_00111760") (: ":") (expression_statement "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);" (assignment_expression "uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5)" (identifier "uVar8") (= "=") (call_expression "dcgettext(0,".debug_abbrev section not zero terminated\n",5)" (identifier "dcgettext") (argument_list "(0,".debug_abbrev section not zero terminated\n",5)" (( "(") (number_literal "0") (, ",") (string_literal "".debug_abbrev section not zero terminated\n"" (" """) (string_content ".debug_abbrev section not zero terminated") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "error(uVar8);" (call_expression "error(uVar8)" (identifier "error") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")"))) (; ";")) (return_statement "return (byte *)0x0;" (return "return") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))

type_1 * function_1(type_1 *var_1,type_1 *var_2)

{
  type_2 bVar1;
  type_3 *var_12;
  type_4 *paVar3;
  type_4 *paVar4;
  type_5 var_6;
  type_5 var_10;
  type_4 *var_8;
  type_3 *var_11;
  char *message;
  type_2 *var_5;
  type_6 *puVar10;
  type_5 dVar11;
  bool bVar12;
  type_6 var_4;
  
  if (var_1 < var_2) {
    do {
      puVar10 = &var_4;
      var_6 = var_3(var_1,&var_4,0,var_2);
      var_5 = var_1 + var_4;
      if (var_2 == var_5) {
        return (type_1 *)0x0;
      }
      if (var_6 == 0) {
        return var_5;
      }
      var_10 = var_3(var_5,puVar10,0,var_2);
      var_5 = var_5 + var_4;
      if (var_2 == var_5) {
        return (type_1 *)0x0;
      }
      var_1 = var_5 + 1;
      bVar1 = *var_5;
      var_8 = (type_4 *)var_7(0x30);
      paVar3 = last_abbrev;
      paVar4 = var_9;
      if (var_8 != (type_4 *)0x0) {
        bVar12 = var_9 != (type_4 *)0x0;
        var_8->entry = var_6;
        var_8->tag = var_10;
        var_8->children = (type_6)bVar1;
        var_8->first_attr = (type_3 *)0x0;
        var_8->last_attr = (type_3 *)0x0;
        var_8->next = (type_4 *)0x0;
        paVar3 = var_8;
        paVar4 = var_8;
        if (bVar12) {
          last_abbrev->next = var_8;
          paVar4 = var_9;
        }
      }
      do {
        var_9 = paVar4;
        last_abbrev = paVar3;
        puVar10 = &var_4;
        var_6 = var_3(var_1,&var_4,0,var_2);
        var_5 = var_1 + var_4;
        if (var_2 == var_5) goto LAB_00111760;
        var_10 = var_3(var_5,puVar10,0,var_2);
        var_1 = var_5 + var_4;
        if (var_2 == var_1) goto LAB_00111760;
        dVar11 = 0xffffffffffffffff;
        if (var_10 == 0x21) {
          dVar11 = var_3(var_1,puVar10,1,var_2);
          var_1 = var_1 + var_4;
          if (var_2 == var_1) goto LAB_00111760;
        }
        var_11 = (type_3 *)var_7(0x20);
        paVar3 = last_abbrev;
        if (var_11 != (type_3 *)0x0) {
          var_11->attribute = var_6;
          var_11->form = var_10;
          var_12 = paVar3->first_attr;
          var_11->implicit_const = dVar11;
          var_11->next = (type_3 *)0x0;
          if (var_12 == (type_3 *)0x0) {
            paVar3->first_attr = var_11;
          }
          else {
            paVar3->last_attr->next = var_11;
          }
          paVar3->last_attr = var_11;
        }
        paVar3 = last_abbrev;
        paVar4 = var_9;
      } while (var_6 != 0);
    } while (var_1 < var_2);
  }
LAB_00111760:
  message = (char *)var_13(0,".debug_abbrev section not zero terminated\n",5);
  var_14(message);
  return (type_1 *)0x0;
}


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

byte * MASKED(byte *param_1,byte *param_2)

{
  byte bVar1;
  long *plVar2;
  long lVar3;
  long lVar4;
  byte *pbVar5;
  long *plVar6;
  long *plVar7;
  undefined8 uVar8;
  long lVar9;
  bool bVar10;
  uint local_3c [3];
  
  if (param_1 < param_2) {
    do {
      lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);
      param_1 = param_1 + local_3c[0];
      if (param_2 == param_1) {
        return (byte *)0x0;
      }
      if (lVar3 == 0) {
        return param_1;
      }
      lVar4 = FUN_001114f0(param_1);
      pbVar5 = param_1 + local_3c[0];
      if (param_2 == pbVar5) {
        return (byte *)0x0;
      }
      param_1 = pbVar5 + 1;
      bVar1 = *pbVar5;
      plVar6 = (long *)malloc(0x30);
      plVar2 = DAT_00159b30;
      plVar7 = DAT_00159b38;
      if (plVar6 != (long *)0x0) {
        bVar10 = DAT_00159b38 != (long *)0x0;
        *plVar6 = lVar3;
        plVar6[1] = lVar4;
        *(uint *)(plVar6 + 2) = (uint)bVar1;
        plVar6[3] = 0;
        plVar6[4] = 0;
        plVar6[5] = 0;
        plVar2 = plVar6;
        plVar7 = plVar6;
        if (bVar10) {
          DAT_00159b30[5] = (long)plVar6;
          plVar7 = DAT_00159b38;
        }
      }
      do {
        DAT_00159b38 = plVar7;
        DAT_00159b30 = plVar2;
        lVar3 = FUN_001114f0(param_1,local_3c,0,param_2);
        param_1 = param_1 + local_3c[0];
        if (param_2 == param_1) goto LAB_00111760;
        lVar4 = FUN_001114f0(param_1);
        param_1 = param_1 + local_3c[0];
        if (param_2 == param_1) goto LAB_00111760;
        lVar9 = -1;
        if (lVar4 == 0x21) {
          lVar9 = FUN_001114f0(param_1);
          param_1 = param_1 + local_3c[0];
          if (param_2 == param_1) goto LAB_00111760;
        }
        plVar7 = (long *)malloc(0x20);
        plVar2 = DAT_00159b30;
        if (plVar7 != (long *)0x0) {
          *plVar7 = lVar3;
          plVar7[1] = lVar4;
          lVar4 = plVar2[3];
          plVar7[2] = lVar9;
          plVar7[3] = 0;
          if (lVar4 == 0) {
            plVar2[3] = (long)plVar7;
          }
          else {
            *(long **)(plVar2[4] + 0x18) = plVar7;
          }
          plVar2[4] = (long)plVar7;
        }
        plVar2 = DAT_00159b30;
        plVar7 = DAT_00159b38;
      } while (lVar3 != 0);
    } while (param_1 < param_2);
  }
LAB_00111760:
  uVar8 = dcgettext(0,".debug_abbrev section not zero terminated\n",5);
  error(uVar8);
  return (byte *)0x0;
}

