
/* DWARF original prototype: void add_strings(Dwo_file * this, Dwp_output_file * output_file, uint
   debug_str) */

void __thiscall
gold::Dwo_file::add_strings(Dwo_file *this,Dwp_output_file *output_file,uint debug_str)

{
  ulong uVar1;
  char *pcVar2;
  uchar *puVar3;
  size_t sVar4;
  pointer ppVar5;
  char *format;
  pointer ppVar6;
  uchar *puVar7;
  pointer ppVar8;
  pointer ppVar9;
  long lVar10;
  long lVar11;
  uchar *puVar12;
  pointer ppVar13;
  ulong uVar14;
  bool is_new;
  section_size_type len;
  pair<long_int,_long_int> local_58 [2];
  
  puVar3 = Object::decompressed_section_contents
                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0);
  puVar7 = puVar3 + len;
  if (puVar7[-1] != '\0') {
    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);
    pcVar2 = this->name_;
    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */
    gold_fatal(format,pcVar2,local_58[0].first);
  }
  if (puVar3 < puVar7) {
    puVar12 = puVar3;
    lVar10 = 0;
    do {
      lVar11 = lVar10;
      sVar4 = strlen((char *)puVar12);
      puVar12 = puVar12 + sVar4 + 1;
      lVar10 = lVar11 + 1;
    } while (puVar12 < puVar7);
    uVar1 = lVar11 + 2;
    if (0xfffffffffffffff < uVar1) {
                    /* WARNING: Subroutine does not return */
      std::__throw_length_error("vector::reserve");
    }
    ppVar6 = (this->str_offset_map_).
             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
             ._M_impl._M_start;
    if ((ulong)((long)(this->str_offset_map_).
                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {
      ppVar9 = (this->str_offset_map_).
               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
               ._M_impl._M_finish;
      uVar14 = uVar1 * 0x10;
      lVar10 = (long)ppVar9 - (long)ppVar6;
      if (uVar1 != 0) goto LAB_0015358d;
      ppVar5 = (pointer)0x0;
      ppVar13 = ppVar5;
      ppVar8 = ppVar6;
joined_r0x001535b6:
      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {
        lVar11 = ppVar6->second;
        ppVar5->first = ppVar6->first;
        ppVar5->second = lVar11;
        ppVar5 = ppVar5 + 1;
      }
      if (ppVar8 != (pointer)0x0) {
        operator_delete(ppVar8);
      }
      (this->str_offset_map_).
      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
      ._M_impl._M_start = ppVar13;
      (this->str_offset_map_).
      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);
      (this->str_offset_map_).
      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);
      goto LAB_001535fc;
    }
  }
  else {
    ppVar6 = (this->str_offset_map_).
             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
             ._M_impl._M_start;
    if (ppVar6 == (this->str_offset_map_).
                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
                  ._M_impl._M_end_of_storage) {
      ppVar9 = (this->str_offset_map_).
               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
               ._M_impl._M_finish;
      uVar14 = 0x10;
      lVar10 = (long)ppVar9 - (long)ppVar6;
LAB_0015358d:
      ppVar5 = (pointer)operator_new(uVar14);
      ppVar13 = ppVar5;
      ppVar8 = (this->str_offset_map_).
               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>
               ._M_impl._M_start;
      goto joined_r0x001535b6;
    }
LAB_001535fc:
    if (puVar7 <= puVar3) {
      lVar10 = 0;
      goto LAB_00153517;
    }
  }
  lVar10 = 0;
  puVar12 = puVar3;
  do {
    sVar4 = strlen((char *)puVar12);
    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);
    local_58[0].first = lVar10;
    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::
    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);
    puVar12 = puVar12 + sVar4 + 1;
    lVar10 = lVar10 + sVar4 + 1;
  } while (puVar12 < puVar7);
LAB_00153517:
  local_58[0].second = 0;
  local_58[0].first = lVar10;
  std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::
  emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);
  if ((is_new != false) && (puVar3 != (uchar *)0x0)) {
    operator_delete__(puVar3);
    return;
  }
  return;
}



void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)

{
  ulong uVar1;
  undefined8 uVar2;
  char *pcVar3;
  size_t sVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  char *pcVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  long lVar11;
  char *pcVar12;
  undefined8 *puVar13;
  long lVar14;
  char local_61;
  long local_60;
  long local_58;
  undefined8 local_50;
  
  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);
  pcVar8 = pcVar3 + local_60;
  if (pcVar8[-1] != '\0') {
    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);
    uVar2 = *param_1;
    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */
    FUN_001781e0(uVar6,uVar2,local_58);
  }
  if (pcVar3 < pcVar8) {
    pcVar12 = pcVar3;
    lVar11 = 0;
    do {
      lVar14 = lVar11;
      sVar4 = strlen(pcVar12);
      pcVar12 = pcVar12 + sVar4 + 1;
      lVar11 = lVar14 + 1;
    } while (pcVar12 < pcVar8);
    uVar1 = lVar14 + 2;
    if (0xfffffffffffffff < uVar1) {
                    /* WARNING: Subroutine does not return */
      FUN_003195a0("vector::reserve");
    }
    puVar7 = (undefined8 *)param_1[0xb];
    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {
      puVar10 = (undefined8 *)param_1[0xc];
      lVar14 = uVar1 * 0x10;
      lVar11 = (long)puVar10 - (long)puVar7;
      if (uVar1 != 0) goto LAB_0015358d;
      puVar5 = (undefined8 *)0x0;
      puVar13 = puVar5;
      puVar9 = puVar7;
joined_r0x001535b6:
      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {
        uVar2 = puVar7[1];
        *puVar5 = *puVar7;
        puVar5[1] = uVar2;
        puVar5 = puVar5 + 2;
      }
      if (puVar9 != (undefined8 *)0x0) {
        FUN_002dac70();
      }
      param_1[0xb] = puVar13;
      param_1[0xd] = (long)puVar13 + lVar14;
      param_1[0xc] = lVar11 + (long)puVar13;
      goto LAB_001535fc;
    }
  }
  else {
    puVar7 = (undefined8 *)param_1[0xb];
    if (puVar7 == (undefined8 *)param_1[0xd]) {
      puVar10 = (undefined8 *)param_1[0xc];
      lVar14 = 0x10;
      lVar11 = (long)puVar10 - (long)puVar7;
LAB_0015358d:
      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);
      puVar13 = puVar5;
      puVar9 = (undefined8 *)param_1[0xb];
      goto joined_r0x001535b6;
    }
LAB_001535fc:
    if (pcVar8 <= pcVar3) {
      lVar11 = 0;
      goto LAB_00153517;
    }
  }
  lVar11 = 0;
  pcVar12 = pcVar3;
  do {
    sVar4 = strlen(pcVar12);
    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);
    local_58 = lVar11;
    FUN_00166280(param_1 + 0xb,&local_58);
    pcVar12 = pcVar12 + sVar4 + 1;
    lVar11 = lVar11 + sVar4 + 1;
  } while (pcVar12 < pcVar8);
LAB_00153517:
  local_50 = 0;
  local_58 = lVar11;
  FUN_00166280(param_1 + 0xb,&local_58);
  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {
    thunk_FUN_002dac70(pcVar3);
    return;
  }
  return;
}


PUSH R15
XOR R8D,R8D
PUSH R14
PUSH R13
MOV R13,RDI
PUSH R12
PUSH RBP
MOV EBP,EDX
PUSH RBX
SUB RSP,0x58
MOV RDI,qword ptr [RDI + 0x8]
MOV qword ptr [RSP],RSI
LEA RCX,[RSP + 0x27]
LEA RDX,[RSP + 0x28]
MOV ESI,EBP
CALL 0x001bd870
MOV RBX,qword ptr [RSP + 0x28]
MOV qword ptr [RSP + 0x8],RAX
ADD RBX,RAX
CMP byte ptr [RBX + -0x1],0x0
JNZ 0x0015364e
MOV RAX,qword ptr [RSP + 0x8]
LEA RBP,[R13 + 0x58]
CMP RBX,RAX
JBE 0x00153620
MOV R12,RAX
XOR R14D,R14D
JMP 0x00153483
MOV R14,R15
MOV RDI,R12
LEA R15,[R14 + 0x1]
CALL 0x00147490
LEA R12,[R12 + RAX*0x1 + 0x1]
CMP RBX,R12
JA 0x00153480
MOV RAX,0xfffffffffffffff
LEA RCX,[R14 + 0x2]
CMP RCX,RAX
JA 0x00153642
MOV RDX,qword ptr [R13 + 0x58]
MOV RAX,qword ptr [R13 + 0x68]
SUB RAX,RDX
SAR RAX,0x4
CMP RCX,RAX
JA 0x00153570
MOV R14,qword ptr [RSP + 0x8]
XOR R13D,R13D
LEA R15,[RSP + 0x30]
NOP dword ptr [RAX]
MOV RDI,R14
CALL 0x00147490
MOV RDI,qword ptr [RSP]
MOV RSI,R14
MOV RDX,RAX
MOV R12,RAX
CALL 0x00151aa0
MOV RSI,R15
MOV RDI,RBP
MOV qword ptr [RSP + 0x30],R13
MOV qword ptr [RSP + 0x38],RAX
CALL 0x00166280
LEA RCX,[R12 + 0x1]
ADD R14,RCX
ADD R13,RCX
CMP RBX,R14
JA 0x001534d8
MOV RSI,R15
MOV RDI,RBP
MOV qword ptr [RSP + 0x30],R13
MOV qword ptr [RSP + 0x38],0x0
CALL 0x00166280
CMP byte ptr [RSP + 0x27],0x0
JZ 0x00153541
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JNZ 0x00153550
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDI,RAX
CALL 0x002dac40
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R9,qword ptr [R13 + 0x60]
MOV R15,RCX
SHL R15,0x4
MOV RAX,R9
SUB RAX,RDX
MOV R12,RAX
TEST RCX,RCX
JZ 0x00153618
MOV RDI,R15
MOV qword ptr [RSP + 0x18],RDX
MOV qword ptr [RSP + 0x10],R9
CALL 0x002d94a0
MOV RDI,qword ptr [R13 + 0x58]
MOV R9,qword ptr [RSP + 0x10]
MOV RDX,qword ptr [RSP + 0x18]
MOV R14,RAX
MOV RCX,R14
CMP RDX,R9
JZ 0x001535dc
NOP dword ptr [RAX + RAX*0x1]
MOV R8,qword ptr [RDX]
MOV RSI,qword ptr [RDX + 0x8]
ADD RDX,0x10
ADD RCX,0x10
MOV qword ptr [RCX + -0x10],R8
MOV qword ptr [RCX + -0x8],RSI
CMP R9,RDX
JNZ 0x001535c0
TEST RDI,RDI
JZ 0x001535e6
CALL 0x002dac70
MOV RDX,R12
LEA RAX,[R14 + R15*0x1]
MOV qword ptr [R13 + 0x58],R14
ADD RDX,R14
MOV qword ptr [R13 + 0x68],RAX
MOV qword ptr [R13 + 0x60],RDX
CMP RBX,qword ptr [RSP + 0x8]
JA 0x001534c8
XOR R13D,R13D
LEA R15,[RSP + 0x30]
JMP 0x00153517
MOV RDI,RDX
XOR R14D,R14D
JMP 0x001535b0
MOV RDX,qword ptr [R13 + 0x58]
CMP RDX,qword ptr [R13 + 0x68]
JNZ 0x001535fc
MOV R9,qword ptr [R13 + 0x60]
MOV R15D,0x10
MOV RAX,R9
SUB RAX,RDX
MOV R12,RAX
JMP 0x0015358d
LEA RDI,[0x36b5ab]
CALL 0x003195a0
MOV RSI,qword ptr [R13 + 0x8]
LEA RBX,[RSP + 0x30]
MOV EDX,EBP
MOV RDI,RBX
MOV RAX,qword ptr [RSI]
CALL qword ptr [RAX + 0x80]
MOV R12,qword ptr [RSP + 0x30]
MOV RBP,qword ptr [R13]
LEA RDI,[0x36b340]
CALL 0x00147320
MOV RDI,RAX
MOV RDX,R12
MOV RSI,RBP
XOR EAX,EAX
CALL 0x001781e0
(translation_unit "void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "char local_61;" primitive_type identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (expression_statement "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);" (assignment_expression "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" identifier = (cast_expression "(char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" identifier (argument_list "(param_1[1],param_3,&local_60,&local_61,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_60" & identifier) , (pointer_expression "&local_61" & identifier) , number_literal ))))) ;) (expression_statement "pcVar8 = pcVar3 + local_60;" (assignment_expression "pcVar8 = pcVar3 + local_60" identifier = (binary_expression "pcVar3 + local_60" identifier + identifier)) ;) (if_statement "if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" if (parenthesized_expression "(pcVar8[-1] != '\0')" ( (binary_expression "pcVar8[-1] != '\0'" (subscript_expression "pcVar8[-1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(&local_58,(long *)param_1[1],param_3)" ( (pointer_expression "&local_58" & identifier) , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");" (assignment_expression "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier = (call_expression "gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier (argument_list "("%s: last entry in string section \'%s\' is not null terminated")" ( (string_literal ""%s: last entry in string section \'%s\' is not null terminated"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) comment comment (expression_statement "FUN_001781e0(uVar6,uVar2,local_58);" (call_expression "FUN_001781e0(uVar6,uVar2,local_58)" identifier (argument_list "(uVar6,uVar2,local_58)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" if (parenthesized_expression "(pcVar3 < pcVar8)" ( (binary_expression "pcVar3 < pcVar8" identifier < identifier) )) (compound_statement "{\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }" { (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" identifier = identifier) ;) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);" do (compound_statement "{\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    }" { (expression_statement "lVar14 = lVar11;" (assignment_expression "lVar14 = lVar11" identifier = identifier) ;) (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" identifier = (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar11 = lVar14 + 1;" (assignment_expression "lVar11 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pcVar12 < pcVar8)" ( (binary_expression "pcVar12 < pcVar8" identifier < identifier) )) ;) (expression_statement "uVar1 = lVar14 + 2;" (assignment_expression "uVar1 = lVar14 + 2" identifier = (binary_expression "lVar14 + 2" identifier + number_literal)) ;) (if_statement "if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }" if (parenthesized_expression "(0xfffffffffffffff < uVar1)" ( (binary_expression "0xfffffffffffffff < uVar1" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_003195a0("vector::reserve");\n    }" { comment (expression_statement "FUN_003195a0("vector::reserve");" (call_expression "FUN_003195a0("vector::reserve")" identifier (argument_list "("vector::reserve")" ( (string_literal ""vector::reserve"" " string_content ") ))) ;) })) (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" if (parenthesized_expression "((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1)" ( (binary_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1" (call_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0xd] - (long)puVar7 >> 4)" ( (binary_expression "param_1[0xd] - (long)puVar7 >> 4" (binary_expression "param_1[0xd] - (long)puVar7" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) < identifier) )) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" { (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" identifier = (cast_expression "(undefined8 *)param_1[0xc]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "lVar14 = uVar1 * 0x10;" (assignment_expression "lVar14 = uVar1 * 0x10" identifier = (binary_expression "uVar1 * 0x10" identifier * number_literal)) ;) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" identifier = (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (uVar1 != 0) goto LAB_0015358d;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0015358d;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (labeled_statement "joined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" statement_identifier : (for_statement "for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" for ( ; (binary_expression "puVar7 != puVar10" identifier != identifier) ; (assignment_expression "puVar7 = puVar7 + 2" identifier = (binary_expression "puVar7 + 2" identifier + number_literal)) ) (compound_statement "{\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" { (expression_statement "uVar2 = puVar7[1];" (assignment_expression "uVar2 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) }))) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }" if (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" ( (binary_expression "puVar9 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_002dac70();\n      }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1[0xb] = puVar13;" (assignment_expression "param_1[0xb] = puVar13" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = (long)puVar13 + lVar14;" (assignment_expression "param_1[0xd] = (long)puVar13 + lVar14" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "(long)puVar13 + lVar14" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "param_1[0xc] = lVar11 + (long)puVar13;" (assignment_expression "param_1[0xc] = lVar11 + (long)puVar13" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "lVar11 + (long)puVar13" identifier + (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (goto_statement "goto LAB_001535fc;" goto statement_identifier ;) })) }) (else_clause "else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" else (compound_statement "{\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" { (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" if (parenthesized_expression "(puVar7 == (undefined8 *)param_1[0xd])" ( (binary_expression "puVar7 == (undefined8 *)param_1[0xd]" identifier == (cast_expression "(undefined8 *)param_1[0xd]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ]))) )) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" { (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" identifier = (cast_expression "(undefined8 *)param_1[0xc]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "lVar14 = 0x10;" (assignment_expression "lVar14 = 0x10" identifier = number_literal) ;) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" identifier = (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "LAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" statement_identifier : (expression_statement "puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" (assignment_expression "puVar5 = (undefined8 *)FUN_002d94a0(lVar14)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(lVar14)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(lVar14)" identifier (argument_list "(lVar14)" ( identifier ))))) ;)) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar9 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x001535b6;" goto statement_identifier ;) })) (labeled_statement "LAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" statement_identifier : (if_statement "if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" if (parenthesized_expression "(pcVar8 <= pcVar3)" ( (binary_expression "pcVar8 <= pcVar3" identifier <= identifier) )) (compound_statement "{\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00153517;" goto statement_identifier ;) }))) }))) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" identifier = identifier) ;) (do_statement "do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);" do (compound_statement "{\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  }" { (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);" (assignment_expression "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4)" identifier = (call_expression "FUN_00151aa0(param_2,pcVar12,sVar4)" identifier (argument_list "(param_2,pcVar12,sVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" identifier = identifier) ;) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" identifier (argument_list "(param_1 + 0xb,&local_58)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" identifier = (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar11 = lVar11 + sVar4 + 1;" (assignment_expression "lVar11 = lVar11 + sVar4 + 1" identifier = (binary_expression "lVar11 + sVar4 + 1" (binary_expression "lVar11 + sVar4" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(pcVar12 < pcVar8)" ( (binary_expression "pcVar12 < pcVar8" identifier < identifier) )) ;) (labeled_statement "LAB_00153517:\n  local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" identifier = identifier) ;) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" identifier (argument_list "(param_1 + 0xb,&local_58)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" if (parenthesized_expression "((local_61 != '\0') && (pcVar3 != (char *)0x0))" ( (binary_expression "(local_61 != '\0') && (pcVar3 != (char *)0x0)" (parenthesized_expression "(local_61 != '\0')" ( (binary_expression "local_61 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" { (expression_statement "thunk_FUN_002dac70(pcVar3);" (call_expression "thunk_FUN_002dac70(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void add_strings(Dwo_file * this, Dwp_output_file * output_file, uint\n   debug_str) */\n\nvoid __thiscall\ngold::Dwo_file::add_strings(Dwo_file *this,Dwp_output_file *output_file,uint debug_str)\n\n{\n  ulong uVar1;\n  char *pcVar2;\n  uchar *puVar3;\n  size_t sVar4;\n  pointer ppVar5;\n  char *format;\n  pointer ppVar6;\n  uchar *puVar7;\n  pointer ppVar8;\n  pointer ppVar9;\n  long lVar10;\n  long lVar11;\n  uchar *puVar12;\n  pointer ppVar13;\n  ulong uVar14;\n  bool is_new;\n  section_size_type len;\n  pair<long_int,_long_int> local_58 [2];\n  \n  puVar3 = Object::decompressed_section_contents\n                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0);\n  puVar7 = puVar3 + len;\n  if (puVar7[-1] != '\0') {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);\n    pcVar2 = this->name_;\n    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    gold_fatal(format,pcVar2,local_58[0].first);\n  }\n  if (puVar3 < puVar7) {\n    puVar12 = puVar3;\n    lVar10 = 0;\n    do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);\n    uVar1 = lVar11 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar10 = 0;\n  puVar12 = puVar3;\n  do {\n    sVar4 = strlen((char *)puVar12);\n    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);\n    local_58[0].first = lVar10;\n    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n    puVar12 = puVar12 + sVar4 + 1;\n    lVar10 = lVar10 + sVar4 + 1;\n  } while (puVar12 < puVar7);\nLAB_00153517:\n  local_58[0].second = 0;\n  local_58[0].first = lVar10;\n  std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n  emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n  if ((is_new != false) && (puVar3 != (uchar *)0x0)) {\n    operator_delete__(puVar3);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Dwo_file::add_strings(Dwo_file *this,Dwp_output_file *output_file,uint debug_str)\n\n{\n  ulong uVar1;\n  char *pcVar2;\n  uchar *puVar3;\n  size_t sVar4;\n  pointer ppVar5;\n  char *format;\n  pointer ppVar6;\n  uchar *puVar7;\n  pointer ppVar8;\n  pointer ppVar9;\n  long lVar10;\n  long lVar11;\n  uchar *puVar12;\n  pointer ppVar13;\n  ulong uVar14;\n  bool is_new;\n  section_size_type len;\n  pair<long_int,_long_int> local_58 [2];\n  \n  puVar3 = Object::decompressed_section_contents\n                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0);\n  puVar7 = puVar3 + len;\n  if (puVar7[-1] != '\0') {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);\n    pcVar2 = this->name_;\n    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    gold_fatal(format,pcVar2,local_58[0].first);\n  }\n  if (puVar3 < puVar7) {\n    puVar12 = puVar3;\n    lVar10 = 0;\n    do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);\n    uVar1 = lVar11 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar10 = 0;\n  puVar12 = puVar3;\n  do {\n    sVar4 = strlen((char *)puVar12);\n    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);\n    local_58[0].first = lVar10;\n    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n    puVar12 = puVar12 + sVar4 + 1;\n    lVar10 = lVar10 + sVar4 + 1;\n  } while (puVar12 < puVar7);\nLAB_00153517:\n  local_58[0].second = 0;\n  local_58[0].first = lVar10;\n  std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n  emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n  if ((is_new != false) && (puVar3 != (uchar *)0x0)) {\n    operator_delete__(puVar3);\n    return;\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dwo_file::" identifier : : identifier : :) (function_declarator "add_strings(Dwo_file *this,Dwp_output_file *output_file,uint debug_str)" identifier (parameter_list "(Dwo_file *this,Dwp_output_file *output_file,uint debug_str)" ( (parameter_declaration "Dwo_file *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Dwp_output_file *output_file" type_identifier (pointer_declarator "*output_file" * identifier)) , (parameter_declaration "uint debug_str" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  char *pcVar2;\n  uchar *puVar3;\n  size_t sVar4;\n  pointer ppVar5;\n  char *format;\n  pointer ppVar6;\n  uchar *puVar7;\n  pointer ppVar8;\n  pointer ppVar9;\n  long lVar10;\n  long lVar11;\n  uchar *puVar12;\n  pointer ppVar13;\n  ulong uVar14;\n  bool is_new;\n  section_size_type len;\n  pair<long_int,_long_int> local_58 [2];\n  \n  puVar3 = Object::decompressed_section_contents\n                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0);\n  puVar7 = puVar3 + len;\n  if (puVar7[-1] != '\0') {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);\n    pcVar2 = this->name_;\n    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    gold_fatal(format,pcVar2,local_58[0].first);\n  }\n  if (puVar3 < puVar7) {\n    puVar12 = puVar3;\n    lVar10 = 0;\n    do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);\n    uVar1 = lVar11 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar10 = 0;\n  puVar12 = puVar3;\n  do {\n    sVar4 = strlen((char *)puVar12);\n    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);\n    local_58[0].first = lVar10;\n    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n    puVar12 = puVar12 + sVar4 + 1;\n    lVar10 = lVar10 + sVar4 + 1;\n  } while (puVar12 < puVar7);\nLAB_00153517:\n  local_58[0].second = 0;\n  local_58[0].first = lVar10;\n  std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n  emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n  if ((is_new != false) && (puVar3 != (uchar *)0x0)) {\n    operator_delete__(puVar3);\n    return;\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uchar *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "pointer ppVar5;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "pointer ppVar6;" type_identifier identifier ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "pointer ppVar8;" type_identifier identifier ;) (declaration "pointer ppVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "uchar *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "pointer ppVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "bool is_new;" primitive_type identifier ;) (declaration "section_size_type len;" type_identifier identifier ;) (expression_statement "pair<long_int,_long_int> local_58 [2];" (comma_expression "pair<long_int,_long_int> local_58 [2]" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int> local_58 [2]" identifier > (subscript_expression "local_58 [2]" identifier [ number_literal ]))) ;) (ERROR "puVar3 = Object::" (assignment_expression "puVar3 = Object" identifier = identifier) : :) (expression_statement "decompressed_section_contents\n                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0);" (call_expression "decompressed_section_contents\n                     (&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0)" identifier (argument_list "(&this->obj_->super_Object,debug_str,&len,&is_new,(uint64_t *)0x0)" ( (pointer_expression "&this->obj_->super_Object" & (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier)) , identifier , (pointer_expression "&len" & identifier) , (pointer_expression "&is_new" & identifier) , (cast_expression "(uint64_t *)0x0" ( (type_descriptor "uint64_t *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "puVar7 = puVar3 + len;" (assignment_expression "puVar7 = puVar3 + len" identifier = (binary_expression "puVar3 + len" identifier + identifier)) ;) (if_statement "if (puVar7[-1] != '\0') {\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);\n    pcVar2 = this->name_;\n    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    gold_fatal(format,pcVar2,local_58[0].first);\n  }" if (parenthesized_expression "(puVar7[-1] != '\0')" ( (binary_expression "puVar7[-1] != '\0'" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);\n    pcVar2 = this->name_;\n    format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */\n    gold_fatal(format,pcVar2,local_58[0].first);\n  }" { (expression_statement "(*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str);" (call_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(ulong)debug_str)" (parenthesized_expression "(*(this->obj_->super_Object)._vptr_Object[0x10])" ( (pointer_expression "*(this->obj_->super_Object)._vptr_Object[0x10]" * (subscript_expression "(this->obj_->super_Object)._vptr_Object[0x10]" (field_expression "(this->obj_->super_Object)._vptr_Object" (parenthesized_expression "(this->obj_->super_Object)" ( (field_expression "this->obj_->super_Object" (field_expression "this->obj_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(local_58,this->obj_,(ulong)debug_str)" ( identifier , (field_expression "this->obj_" identifier -> field_identifier) , (cast_expression "(ulong)debug_str" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pcVar2 = this->name_;" (assignment_expression "pcVar2 = this->name_" identifier = (field_expression "this->name_" identifier -> field_identifier)) ;) (expression_statement "format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated");" (assignment_expression "format = (char *)gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier = (cast_expression "(char *)gettext("%s: last entry in string section \'%s\' is not null terminated")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier (argument_list "("%s: last entry in string section \'%s\' is not null terminated")" ( (string_literal ""%s: last entry in string section \'%s\' is not null terminated"" " string_content escape_sequence string_content escape_sequence string_content ") ))))) ;) comment comment (expression_statement "gold_fatal(format,pcVar2,local_58[0].first);" (call_expression "gold_fatal(format,pcVar2,local_58[0].first)" identifier (argument_list "(format,pcVar2,local_58[0].first)" ( identifier , identifier , (field_expression "local_58[0].first" (subscript_expression "local_58[0]" identifier [ number_literal ]) . field_identifier) ))) ;) })) (if_statement "if (puVar3 < puVar7) {\n    puVar12 = puVar3;\n    lVar10 = 0;\n    do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);\n    uVar1 = lVar11 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }" if (parenthesized_expression "(puVar3 < puVar7)" ( (binary_expression "puVar3 < puVar7" identifier < identifier) )) (compound_statement "{\n    puVar12 = puVar3;\n    lVar10 = 0;\n    do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);\n    uVar1 = lVar11 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }\n  }" { (expression_statement "puVar12 = puVar3;" (assignment_expression "puVar12 = puVar3" identifier = identifier) ;) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    } while (puVar12 < puVar7);" do (compound_statement "{\n      lVar11 = lVar10;\n      sVar4 = strlen((char *)puVar12);\n      puVar12 = puVar12 + sVar4 + 1;\n      lVar10 = lVar11 + 1;\n    }" { (expression_statement "lVar11 = lVar10;" (assignment_expression "lVar11 = lVar10" identifier = identifier) ;) (expression_statement "sVar4 = strlen((char *)puVar12);" (assignment_expression "sVar4 = strlen((char *)puVar12)" identifier = (call_expression "strlen((char *)puVar12)" identifier (argument_list "((char *)puVar12)" ( (cast_expression "(char *)puVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "puVar12 = puVar12 + sVar4 + 1;" (assignment_expression "puVar12 = puVar12 + sVar4 + 1" identifier = (binary_expression "puVar12 + sVar4 + 1" (binary_expression "puVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar10 = lVar11 + 1;" (assignment_expression "lVar10 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 < puVar7)" ( (binary_expression "puVar12 < puVar7" identifier < identifier) )) ;) (expression_statement "uVar1 = lVar11 + 2;" (assignment_expression "uVar1 = lVar11 + 2" identifier = (binary_expression "lVar11 + 2" identifier + number_literal)) ;) (if_statement "if (0xfffffffffffffff < uVar1) {\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }" if (parenthesized_expression "(0xfffffffffffffff < uVar1)" ( (binary_expression "0xfffffffffffffff < uVar1" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      std::__throw_length_error("vector::reserve");\n    }" { comment (labeled_statement "std::__throw_length_error("vector::reserve");" statement_identifier : (ERROR ":" :) (expression_statement "__throw_length_error("vector::reserve");" (call_expression "__throw_length_error("vector::reserve")" identifier (argument_list "("vector::reserve")" ( (string_literal ""vector::reserve"" " string_content ") ))) ;)) })) (ERROR "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int" (assignment_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n             super__Vector_base<std" (field_expression "(this->str_offset_map_).\n             super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;" (comma_expression "pair<long_int,_long_int>_>_>\n             ._M_impl._M_start" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n             ._M_impl._M_start" (field_expression "_long_int>_>_>\n             ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (if_statement "if ((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }" if (parenthesized_expression "((ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1)" ( (binary_expression "(ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4) < uVar1" (call_expression "(ulong)((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4)" ( (binary_expression "(long)(this->str_offset_map_).\n                      super__Vector_base<std::pair<long_int" (binary_expression "(long)(this->str_offset_map_).\n                      super__Vector_base<std" (cast_expression "(long)(this->str_offset_map_).\n                      super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->str_offset_map_).\n                      super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::pair" : : identifier) < identifier) , identifier (ERROR ">" >) , (ERROR "_std::allocator<std::" identifier : : (binary_expression "allocator<std" identifier < identifier) : :) (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6 >> 4" (binary_expression "_long_int>_>_>\n                      ._M_impl._M_end_of_storage - (long)ppVar6" (field_expression "_long_int>_>_>\n                      ._M_impl._M_end_of_storage" (field_expression "_long_int>_>_>\n                      ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)ppVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) < identifier) )) (compound_statement "{\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = uVar1 * 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\n      if (uVar1 != 0) goto LAB_0015358d;\n      ppVar5 = (pointer)0x0;\n      ppVar13 = ppVar5;\n      ppVar8 = ppVar6;\njoined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }\n      if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);\n      (this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);\n      goto LAB_001535fc;\n    }" { (ERROR "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int" (assignment_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n               super__Vector_base<std" (field_expression "(this->str_offset_map_).\n               super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;" (comma_expression "pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n               ._M_impl._M_finish" (field_expression "_long_int>_>_>\n               ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "uVar14 = uVar1 * 0x10;" (assignment_expression "uVar14 = uVar1 * 0x10" identifier = (binary_expression "uVar1 * 0x10" identifier * number_literal)) ;) (expression_statement "lVar10 = (long)ppVar9 - (long)ppVar6;" (assignment_expression "lVar10 = (long)ppVar9 - (long)ppVar6" identifier = (binary_expression "(long)ppVar9 - (long)ppVar6" (cast_expression "(long)ppVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ppVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (uVar1 != 0) goto LAB_0015358d;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0015358d;" goto statement_identifier ;)) (expression_statement "ppVar5 = (pointer)0x0;" (assignment_expression "ppVar5 = (pointer)0x0" identifier = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "ppVar13 = ppVar5;" (assignment_expression "ppVar13 = ppVar5" identifier = identifier) ;) (expression_statement "ppVar8 = ppVar6;" (assignment_expression "ppVar8 = ppVar6" identifier = identifier) ;) (labeled_statement "joined_r0x001535b6:\n      for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }" statement_identifier : (for_statement "for (; ppVar6 != ppVar9; ppVar6 = ppVar6 + 1) {\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }" for ( ; (binary_expression "ppVar6 != ppVar9" identifier != identifier) ; (assignment_expression "ppVar6 = ppVar6 + 1" identifier = (binary_expression "ppVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n        lVar11 = ppVar6->second;\n        ppVar5->first = ppVar6->first;\n        ppVar5->second = lVar11;\n        ppVar5 = ppVar5 + 1;\n      }" { (expression_statement "lVar11 = ppVar6->second;" (assignment_expression "lVar11 = ppVar6->second" identifier = (field_expression "ppVar6->second" identifier -> field_identifier)) ;) (expression_statement "ppVar5->first = ppVar6->first;" (assignment_expression "ppVar5->first = ppVar6->first" (field_expression "ppVar5->first" identifier -> field_identifier) = (field_expression "ppVar6->first" identifier -> field_identifier)) ;) (expression_statement "ppVar5->second = lVar11;" (assignment_expression "ppVar5->second = lVar11" (field_expression "ppVar5->second" identifier -> field_identifier) = identifier) ;) (expression_statement "ppVar5 = ppVar5 + 1;" (assignment_expression "ppVar5 = ppVar5 + 1" identifier = (binary_expression "ppVar5 + 1" identifier + number_literal)) ;) }))) (if_statement "if (ppVar8 != (pointer)0x0) {\n        operator_delete(ppVar8);\n      }" if (parenthesized_expression "(ppVar8 != (pointer)0x0)" ( (binary_expression "ppVar8 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n        operator_delete(ppVar8);\n      }" { (expression_statement "operator_delete(ppVar8);" (call_expression "operator_delete(ppVar8)" identifier (argument_list "(ppVar8)" ( identifier ))) ;) })) (ERROR "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std" (field_expression "(this->str_offset_map_).\n      super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13;" (comma_expression "pair<long_int,_long_int>_>_>\n      ._M_impl._M_start = ppVar13" (binary_expression "pair<long_int" identifier < identifier) , (assignment_expression "_long_int>_>_>\n      ._M_impl._M_start = ppVar13" (field_expression "_long_int>_>_>\n      ._M_impl._M_start" (field_expression "_long_int>_>_>\n      ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier)) ;) (ERROR "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std" (field_expression "(this->str_offset_map_).\n      super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14);" (comma_expression "pair<long_int,_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14)" (binary_expression "pair<long_int" identifier < identifier) , (assignment_expression "_long_int>_>_>\n      ._M_impl._M_end_of_storage = (pointer)((long)&ppVar13->first + uVar14)" (field_expression "_long_int>_>_>\n      ._M_impl._M_end_of_storage" (field_expression "_long_int>_>_>\n      ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (call_expression "(pointer)((long)&ppVar13->first + uVar14)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&ppVar13->first + uVar14)" ( (binary_expression "(long)&ppVar13->first + uVar14" (cast_expression "(long)&ppVar13->first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ppVar13->first" & (field_expression "ppVar13->first" identifier -> field_identifier))) + identifier) ))))) ;) (ERROR "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std::pair<long_int" (binary_expression "(this->str_offset_map_).\n      super__Vector_base<std" (field_expression "(this->str_offset_map_).\n      super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10);" (comma_expression "pair<long_int,_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10)" (binary_expression "pair<long_int" identifier < identifier) , (assignment_expression "_long_int>_>_>\n      ._M_impl._M_finish = (pointer)((long)&ppVar13->first + lVar10)" (field_expression "_long_int>_>_>\n      ._M_impl._M_finish" (field_expression "_long_int>_>_>\n      ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (call_expression "(pointer)((long)&ppVar13->first + lVar10)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "((long)&ppVar13->first + lVar10)" ( (binary_expression "(long)&ppVar13->first + lVar10" (cast_expression "(long)&ppVar13->first" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&ppVar13->first" & (field_expression "ppVar13->first" identifier -> field_identifier))) + identifier) ))))) ;) (goto_statement "goto LAB_001535fc;" goto statement_identifier ;) })) }) (else_clause "else {\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }" else (compound_statement "{\n    ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;\n    if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }\n  }" { (ERROR "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std::pair<long_int" (assignment_expression "ppVar6 = (this->str_offset_map_).\n             super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n             super__Vector_base<std" (field_expression "(this->str_offset_map_).\n             super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n             ._M_impl._M_start;" (comma_expression "pair<long_int,_long_int>_>_>\n             ._M_impl._M_start" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n             ._M_impl._M_start" (field_expression "_long_int>_>_>\n             ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (if_statement "if (ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage) {\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }" if (parenthesized_expression "(ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage)" ( (ERROR "ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std::pair<long_int" (binary_expression "ppVar6 == (this->str_offset_map_).\n                  super__Vector_base<std" identifier == (binary_expression "(this->str_offset_map_).\n                  super__Vector_base<std" (field_expression "(this->str_offset_map_).\n                  super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (comma_expression "pair<long_int,_long_int>_>_>\n                  ._M_impl._M_end_of_storage" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n                  ._M_impl._M_end_of_storage" (field_expression "_long_int>_>_>\n                  ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) )) (compound_statement "{\n      ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;\n      uVar14 = 0x10;\n      lVar10 = (long)ppVar9 - (long)ppVar6;\nLAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);\n      ppVar13 = ppVar5;\n      ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;\n      goto joined_r0x001535b6;\n    }" { (ERROR "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int" (assignment_expression "ppVar9 = (this->str_offset_map_).\n               super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n               super__Vector_base<std" (field_expression "(this->str_offset_map_).\n               super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish;" (comma_expression "pair<long_int,_long_int>_>_>\n               ._M_impl._M_finish" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n               ._M_impl._M_finish" (field_expression "_long_int>_>_>\n               ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (expression_statement "uVar14 = 0x10;" (assignment_expression "uVar14 = 0x10" identifier = number_literal) ;) (expression_statement "lVar10 = (long)ppVar9 - (long)ppVar6;" (assignment_expression "lVar10 = (long)ppVar9 - (long)ppVar6" identifier = (binary_expression "(long)ppVar9 - (long)ppVar6" (cast_expression "(long)ppVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)ppVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "LAB_0015358d:\n      ppVar5 = (pointer)operator_new(uVar14);" statement_identifier : (expression_statement "ppVar5 = (pointer)operator_new(uVar14);" (assignment_expression "ppVar5 = (pointer)operator_new(uVar14)" identifier = (cast_expression "(pointer)operator_new(uVar14)" ( (type_descriptor "pointer" type_identifier) ) (call_expression "operator_new(uVar14)" identifier (argument_list "(uVar14)" ( identifier ))))) ;)) (expression_statement "ppVar13 = ppVar5;" (assignment_expression "ppVar13 = ppVar5" identifier = identifier) ;) (ERROR "ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std::allocator<std::" (comma_expression "ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int,_long_int>,_std" (binary_expression "ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std::pair<long_int" (assignment_expression "ppVar8 = (this->str_offset_map_).\n               super__Vector_base<std" identifier = (binary_expression "(this->str_offset_map_).\n               super__Vector_base<std" (field_expression "(this->str_offset_map_).\n               super__Vector_base" (parenthesized_expression "(this->str_offset_map_)" ( (field_expression "this->str_offset_map_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::pair" : : identifier) < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : :) (expression_statement "pair<long_int,_long_int>_>_>\n               ._M_impl._M_start;" (comma_expression "pair<long_int,_long_int>_>_>\n               ._M_impl._M_start" (binary_expression "pair<long_int" identifier < identifier) , (field_expression "_long_int>_>_>\n               ._M_impl._M_start" (field_expression "_long_int>_>_>\n               ._M_impl" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (goto_statement "goto joined_r0x001535b6;" goto statement_identifier ;) })) (labeled_statement "LAB_001535fc:\n    if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }" statement_identifier : (if_statement "if (puVar7 <= puVar3) {\n      lVar10 = 0;\n      goto LAB_00153517;\n    }" if (parenthesized_expression "(puVar7 <= puVar3)" ( (binary_expression "puVar7 <= puVar3" identifier <= identifier) )) (compound_statement "{\n      lVar10 = 0;\n      goto LAB_00153517;\n    }" { (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00153517;" goto statement_identifier ;) }))) }))) (expression_statement "lVar10 = 0;" (assignment_expression "lVar10 = 0" identifier = number_literal) ;) (expression_statement "puVar12 = puVar3;" (assignment_expression "puVar12 = puVar3" identifier = identifier) ;) (do_statement "do {\n    sVar4 = strlen((char *)puVar12);\n    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);\n    local_58[0].first = lVar10;\n    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n    puVar12 = puVar12 + sVar4 + 1;\n    lVar10 = lVar10 + sVar4 + 1;\n  } while (puVar12 < puVar7);" do (compound_statement "{\n    sVar4 = strlen((char *)puVar12);\n    local_58[0].second = Dwp_output_file::add_string(output_file,(char *)puVar12,sVar4);\n    local_58[0].first = lVar10;\n    std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);\n    puVar12 = puVar12 + sVar4 + 1;\n    lVar10 = lVar10 + sVar4 + 1;\n  }" { (expression_statement "sVar4 = strlen((char *)puVar12);" (assignment_expression "sVar4 = strlen((char *)puVar12)" identifier = (call_expression "strlen((char *)puVar12)" identifier (argument_list "((char *)puVar12)" ( (cast_expression "(char *)puVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (ERROR "local_58[0].second = Dwp_output_file::" (assignment_expression "local_58[0].second = Dwp_output_file" (field_expression "local_58[0].second" (subscript_expression "local_58[0]" identifier [ number_literal ]) . field_identifier) = identifier) : :) (expression_statement "add_string(output_file,(char *)puVar12,sVar4);" (call_expression "add_string(output_file,(char *)puVar12,sVar4)" identifier (argument_list "(output_file,(char *)puVar12,sVar4)" ( identifier , (cast_expression "(char *)puVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "local_58[0].first = lVar10;" (assignment_expression "local_58[0].first = lVar10" (field_expression "local_58[0].first" (subscript_expression "local_58[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (labeled_statement "std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);" statement_identifier (ERROR "::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n    emplace_back<std:" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<long_int,_long_int>,_std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int,_long_int>_>_>::\n    emplace_back<std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>_>_>::\n    emplace_back<std" (binary_expression "_long_int>_>_>::\n    emplace_back" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) :) : (expression_statement "pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);" (comma_expression "pair<long_int,_long_int>_>(&this->str_offset_map_,local_58)" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>_>(&this->str_offset_map_,local_58)" (binary_expression "_long_int>_" identifier > identifier) > (parenthesized_expression "(&this->str_offset_map_,local_58)" ( (comma_expression "&this->str_offset_map_,local_58" (pointer_expression "&this->str_offset_map_" & (field_expression "this->str_offset_map_" identifier -> field_identifier)) , identifier) )))) ;)) (expression_statement "puVar12 = puVar12 + sVar4 + 1;" (assignment_expression "puVar12 = puVar12 + sVar4 + 1" identifier = (binary_expression "puVar12 + sVar4 + 1" (binary_expression "puVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar10 = lVar10 + sVar4 + 1;" (assignment_expression "lVar10 = lVar10 + sVar4 + 1" identifier = (binary_expression "lVar10 + sVar4 + 1" (binary_expression "lVar10 + sVar4" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(puVar12 < puVar7)" ( (binary_expression "puVar12 < puVar7" identifier < identifier) )) ;) (labeled_statement "LAB_00153517:\n  local_58[0].second = 0;" statement_identifier : (expression_statement "local_58[0].second = 0;" (assignment_expression "local_58[0].second = 0" (field_expression "local_58[0].second" (subscript_expression "local_58[0]" identifier [ number_literal ]) . field_identifier) = number_literal) ;)) (expression_statement "local_58[0].first = lVar10;" (assignment_expression "local_58[0].first = lVar10" (field_expression "local_58[0].first" (subscript_expression "local_58[0]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (labeled_statement "std::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n  emplace_back<std::pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);" statement_identifier (ERROR "::vector<std::pair<long_int,_long_int>,_std::allocator<std::pair<long_int,_long_int>_>_>::\n  emplace_back<std:" : : (binary_expression "vector<std" identifier < identifier) : : (comma_expression "pair<long_int,_long_int>,_std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>,_std" identifier > (ERROR "," ,) identifier)) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int,_long_int>_>_>::\n  emplace_back<std" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>_>_>::\n  emplace_back<std" (binary_expression "_long_int>_>_>::\n  emplace_back" (binary_expression "_long_int>_>_" (binary_expression "_long_int>_" identifier > identifier) > identifier) > (ERROR "::" : :) identifier) < identifier)) :) : (expression_statement "pair<long_int,_long_int>_>(&this->str_offset_map_,local_58);" (comma_expression "pair<long_int,_long_int>_>(&this->str_offset_map_,local_58)" (binary_expression "pair<long_int" identifier < identifier) , (binary_expression "_long_int>_>(&this->str_offset_map_,local_58)" (binary_expression "_long_int>_" identifier > identifier) > (parenthesized_expression "(&this->str_offset_map_,local_58)" ( (comma_expression "&this->str_offset_map_,local_58" (pointer_expression "&this->str_offset_map_" & (field_expression "this->str_offset_map_" identifier -> field_identifier)) , identifier) )))) ;)) (if_statement "if ((is_new != false) && (puVar3 != (uchar *)0x0)) {\n    operator_delete__(puVar3);\n    return;\n  }" if (parenthesized_expression "((is_new != false) && (puVar3 != (uchar *)0x0))" ( (binary_expression "(is_new != false) && (puVar3 != (uchar *)0x0)" (parenthesized_expression "(is_new != false)" ( (binary_expression "is_new != false" identifier != false) )) && (parenthesized_expression "(puVar3 != (uchar *)0x0)" ( (binary_expression "puVar3 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    operator_delete__(puVar3);\n    return;\n  }" { (expression_statement "operator_delete__(puVar3);" (call_expression "operator_delete__(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "char local_61;" primitive_type identifier ;) (declaration "long local_60;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_50;" type_identifier identifier ;) (expression_statement "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);" (assignment_expression "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" identifier = (cast_expression "(char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" identifier (argument_list "(param_1[1],param_3,&local_60,&local_61,0)" ( (subscript_expression "param_1[1]" identifier [ number_literal ]) , identifier , (pointer_expression "&local_60" & identifier) , (pointer_expression "&local_61" & identifier) , number_literal ))))) ;) (expression_statement "pcVar8 = pcVar3 + local_60;" (assignment_expression "pcVar8 = pcVar3 + local_60" identifier = (binary_expression "pcVar3 + local_60" identifier + identifier)) ;) (if_statement "if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" if (parenthesized_expression "(pcVar8[-1] != '\0')" ( (binary_expression "pcVar8[-1] != '\0'" (subscript_expression "pcVar8[-1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" { (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" ( (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" * (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" * (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)param_1[1] + 0x80)" ( (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" * (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "(&local_58,(long *)param_1[1],param_3)" ( (pointer_expression "&local_58" & identifier) , (cast_expression "(long *)param_1[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ])) , identifier ))) ;) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");" (assignment_expression "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier = (call_expression "gettext("%s: last entry in string section \'%s\' is not null terminated")" identifier (argument_list "("%s: last entry in string section \'%s\' is not null terminated")" ( (string_literal ""%s: last entry in string section \'%s\' is not null terminated"" " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement "FUN_001781e0(uVar6,uVar2,local_58);" (call_expression "FUN_001781e0(uVar6,uVar2,local_58)" identifier (argument_list "(uVar6,uVar2,local_58)" ( identifier , identifier , identifier ))) ;) })) (if_statement "if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" if (parenthesized_expression "(pcVar3 < pcVar8)" ( (binary_expression "pcVar3 < pcVar8" identifier < identifier) )) (compound_statement "{\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }" { (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" identifier = identifier) ;) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);" do (compound_statement "{\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    }" { (expression_statement "lVar14 = lVar11;" (assignment_expression "lVar14 = lVar11" identifier = identifier) ;) (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" identifier = (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar11 = lVar14 + 1;" (assignment_expression "lVar11 = lVar14 + 1" identifier = (binary_expression "lVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pcVar12 < pcVar8)" ( (binary_expression "pcVar12 < pcVar8" identifier < identifier) )) ;) (expression_statement "uVar1 = lVar14 + 2;" (assignment_expression "uVar1 = lVar14 + 2" identifier = (binary_expression "lVar14 + 2" identifier + number_literal)) ;) (if_statement "if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }" if (parenthesized_expression "(0xfffffffffffffff < uVar1)" ( (binary_expression "0xfffffffffffffff < uVar1" number_literal < identifier) )) (compound_statement "{\n                    \n      FUN_003195a0("vector::reserve");\n    }" { (expression_statement "FUN_003195a0("vector::reserve");" (call_expression "FUN_003195a0("vector::reserve")" identifier (argument_list "("vector::reserve")" ( (string_literal ""vector::reserve"" " string_content ") ))) ;) })) (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" if (parenthesized_expression "((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1)" ( (binary_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1" (call_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(param_1[0xd] - (long)puVar7 >> 4)" ( (binary_expression "param_1[0xd] - (long)puVar7 >> 4" (binary_expression "param_1[0xd] - (long)puVar7" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) ))) < identifier) )) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" { (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" identifier = (cast_expression "(undefined8 *)param_1[0xc]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "lVar14 = uVar1 * 0x10;" (assignment_expression "lVar14 = uVar1 * 0x10" identifier = (binary_expression "uVar1 * 0x10" identifier * number_literal)) ;) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" identifier = (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (if_statement "if (uVar1 != 0) goto LAB_0015358d;" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0015358d;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" identifier = identifier) ;) (labeled_statement "joined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" statement_identifier : (for_statement "for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" for ( ; (binary_expression "puVar7 != puVar10" identifier != identifier) ; (assignment_expression "puVar7 = puVar7 + 2" identifier = (binary_expression "puVar7 + 2" identifier + number_literal)) ) (compound_statement "{\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" { (expression_statement "uVar2 = puVar7[1];" (assignment_expression "uVar2 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar7" * identifier)) ;) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" identifier = (binary_expression "puVar5 + 2" identifier + number_literal)) ;) }))) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }" if (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" ( (binary_expression "puVar9 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        FUN_002dac70();\n      }" { (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_1[0xb] = puVar13;" (assignment_expression "param_1[0xb] = puVar13" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xd] = (long)puVar13 + lVar14;" (assignment_expression "param_1[0xd] = (long)puVar13 + lVar14" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "(long)puVar13 + lVar14" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier)) ;) (expression_statement "param_1[0xc] = lVar11 + (long)puVar13;" (assignment_expression "param_1[0xc] = lVar11 + (long)puVar13" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (binary_expression "lVar11 + (long)puVar13" identifier + (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (goto_statement "goto LAB_001535fc;" goto statement_identifier ;) })) }) (else_clause "else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" else (compound_statement "{\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" { (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" if (parenthesized_expression "(puVar7 == (undefined8 *)param_1[0xd])" ( (binary_expression "puVar7 == (undefined8 *)param_1[0xd]" identifier == (cast_expression "(undefined8 *)param_1[0xd]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xd]" identifier [ number_literal ]))) )) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" { (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" identifier = (cast_expression "(undefined8 *)param_1[0xc]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xc]" identifier [ number_literal ]))) ;) (expression_statement "lVar14 = 0x10;" (assignment_expression "lVar14 = 0x10" identifier = number_literal) ;) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" identifier = (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (labeled_statement "LAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" statement_identifier : (expression_statement "puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" (assignment_expression "puVar5 = (undefined8 *)FUN_002d94a0(lVar14)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(lVar14)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(lVar14)" identifier (argument_list "(lVar14)" ( identifier ))))) ;)) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (expression_statement "puVar9 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar9 = (undefined8 *)param_1[0xb]" identifier = (cast_expression "(undefined8 *)param_1[0xb]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (goto_statement "goto joined_r0x001535b6;" goto statement_identifier ;) })) (labeled_statement "LAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" statement_identifier : (if_statement "if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" if (parenthesized_expression "(pcVar8 <= pcVar3)" ( (binary_expression "pcVar8 <= pcVar3" identifier <= identifier) )) (compound_statement "{\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00153517;" goto statement_identifier ;) }))) }))) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" identifier = identifier) ;) (do_statement "do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);" do (compound_statement "{\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  }" { (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" identifier = (call_expression "strlen(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier )))) ;) (expression_statement "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);" (assignment_expression "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4)" identifier = (call_expression "FUN_00151aa0(param_2,pcVar12,sVar4)" identifier (argument_list "(param_2,pcVar12,sVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" identifier = identifier) ;) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" identifier (argument_list "(param_1 + 0xb,&local_58)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" identifier = (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" identifier + identifier) + number_literal)) ;) (expression_statement "lVar11 = lVar11 + sVar4 + 1;" (assignment_expression "lVar11 = lVar11 + sVar4 + 1" identifier = (binary_expression "lVar11 + sVar4 + 1" (binary_expression "lVar11 + sVar4" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(pcVar12 < pcVar8)" ( (binary_expression "pcVar12 < pcVar8" identifier < identifier) )) ;) (labeled_statement "LAB_00153517:\n  local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" identifier = identifier) ;) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" identifier (argument_list "(param_1 + 0xb,&local_58)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (pointer_expression "&local_58" & identifier) ))) ;) (if_statement "if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" if (parenthesized_expression "((local_61 != '\0') && (pcVar3 != (char *)0x0))" ( (binary_expression "(local_61 != '\0') && (pcVar3 != (char *)0x0)" (parenthesized_expression "(local_61 != '\0')" ( (binary_expression "local_61 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" { (expression_statement "thunk_FUN_002dac70(pcVar3);" (call_expression "thunk_FUN_002dac70(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (pointer_expression & IDENT) , (pointer_expression & IDENT) , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence string_content escape_sequence string_content ") )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) ))) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (for_statement for ( ; (binary_expression IDENT != IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00153420(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" (identifier "FUN_00153420") (parameter_list "(undefined8 *param_1,undefined8 param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  char *pcVar3;\n  size_t sVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 *puVar7;\n  char *pcVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  long lVar11;\n  char *pcVar12;\n  undefined8 *puVar13;\n  long lVar14;\n  char local_61;\n  long local_60;\n  long local_58;\n  undefined8 local_50;\n  \n  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);\n  pcVar8 = pcVar3 + local_60;\n  if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }\n  if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }\n  lVar11 = 0;\n  pcVar12 = pcVar3;\n  do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);\nLAB_00153517:\n  local_50 = 0;\n  local_58 = lVar11;\n  FUN_00166280(param_1 + 0xb,&local_58);\n  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined8 *puVar10;" (type_identifier "undefined8") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "char *pcVar12;" (primitive_type "char") (pointer_declarator "*pcVar12" (* "*") (identifier "pcVar12")) (; ";")) (declaration "undefined8 *puVar13;" (type_identifier "undefined8") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "long lVar14;" (sized_type_specifier "long" (long "long")) (identifier "lVar14") (; ";")) (declaration "char local_61;" (primitive_type "char") (identifier "local_61") (; ";")) (declaration "long local_60;" (sized_type_specifier "long" (long "long")) (identifier "local_60") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "undefined8 local_50;" (type_identifier "undefined8") (identifier "local_50") (; ";")) (expression_statement "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);" (assignment_expression "pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" (identifier "pcVar3") (= "=") (cast_expression "(char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0)" (identifier "FUN_001bd870") (argument_list "(param_1[1],param_3,&local_60,&local_61,0)" (( "(") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (identifier "param_3") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) (, ",") (pointer_expression "&local_61" (& "&") (identifier "local_61")) (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "pcVar8 = pcVar3 + local_60;" (assignment_expression "pcVar8 = pcVar3 + local_60" (identifier "pcVar8") (= "=") (binary_expression "pcVar3 + local_60" (identifier "pcVar3") (+ "+") (identifier "local_60"))) (; ";")) (if_statement "if (pcVar8[-1] != '\0') {\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" (if "if") (parenthesized_expression "(pcVar8[-1] != '\0')" (( "(") (binary_expression "pcVar8[-1] != '\0'" (subscript_expression "pcVar8[-1]" (identifier "pcVar8") ([ "[") (number_literal "-1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);\n    uVar2 = *param_1;\n    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");\n                    \n                    \n    FUN_001781e0(uVar6,uVar2,local_58);\n  }" ({ "{") (expression_statement "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);" (call_expression "(**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3)" (parenthesized_expression "(**(code **)(*(long *)param_1[1] + 0x80))" (( "(") (pointer_expression "**(code **)(*(long *)param_1[1] + 0x80)" (* "*") (pointer_expression "*(code **)(*(long *)param_1[1] + 0x80)" (* "*") (cast_expression "(code **)(*(long *)param_1[1] + 0x80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)param_1[1] + 0x80)" (( "(") (binary_expression "*(long *)param_1[1] + 0x80" (pointer_expression "*(long *)param_1[1]" (* "*") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (+ "+") (number_literal "0x80")) () ")"))))) () ")")) (argument_list "(&local_58,(long *)param_1[1],param_3)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (cast_expression "(long *)param_1[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");" (assignment_expression "uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated")" (identifier "uVar6") (= "=") (call_expression "gettext("%s: last entry in string section \'%s\' is not null terminated")" (identifier "gettext") (argument_list "("%s: last entry in string section \'%s\' is not null terminated")" (( "(") (string_literal ""%s: last entry in string section \'%s\' is not null terminated"" (" """) (string_content "%s: last entry in string section ") (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " is not null terminated") (" """)) () ")")))) (; ";")) (expression_statement "FUN_001781e0(uVar6,uVar2,local_58);" (call_expression "FUN_001781e0(uVar6,uVar2,local_58)" (identifier "FUN_001781e0") (argument_list "(uVar6,uVar2,local_58)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar2") (, ",") (identifier "local_58") () ")"))) (; ";")) (} "}"))) (if_statement "if (pcVar3 < pcVar8) {\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }\n  else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" (if "if") (parenthesized_expression "(pcVar3 < pcVar8)" (( "(") (binary_expression "pcVar3 < pcVar8" (identifier "pcVar3") (< "<") (identifier "pcVar8")) () ")")) (compound_statement "{\n    pcVar12 = pcVar3;\n    lVar11 = 0;\n    do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);\n    uVar1 = lVar14 + 2;\n    if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }\n    puVar7 = (undefined8 *)param_1[0xb];\n    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }\n  }" ({ "{") (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" (identifier "pcVar12") (= "=") (identifier "pcVar3")) (; ";")) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    } while (pcVar12 < pcVar8);" (do "do") (compound_statement "{\n      lVar14 = lVar11;\n      sVar4 = strlen(pcVar12);\n      pcVar12 = pcVar12 + sVar4 + 1;\n      lVar11 = lVar14 + 1;\n    }" ({ "{") (expression_statement "lVar14 = lVar11;" (assignment_expression "lVar14 = lVar11" (identifier "lVar14") (= "=") (identifier "lVar11")) (; ";")) (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar12)" (identifier "strlen") (argument_list "(pcVar12)" (( "(") (identifier "pcVar12") () ")")))) (; ";")) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" (identifier "pcVar12") (= "=") (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" (identifier "pcVar12") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar11 = lVar14 + 1;" (assignment_expression "lVar11 = lVar14 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar14 + 1" (identifier "lVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar12 < pcVar8)" (( "(") (binary_expression "pcVar12 < pcVar8" (identifier "pcVar12") (< "<") (identifier "pcVar8")) () ")")) (; ";")) (expression_statement "uVar1 = lVar14 + 2;" (assignment_expression "uVar1 = lVar14 + 2" (identifier "uVar1") (= "=") (binary_expression "lVar14 + 2" (identifier "lVar14") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (0xfffffffffffffff < uVar1) {\n                    \n      FUN_003195a0("vector::reserve");\n    }" (if "if") (parenthesized_expression "(0xfffffffffffffff < uVar1)" (( "(") (binary_expression "0xfffffffffffffff < uVar1" (number_literal "0xfffffffffffffff") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n                    \n      FUN_003195a0("vector::reserve");\n    }" ({ "{") (expression_statement "FUN_003195a0("vector::reserve");" (call_expression "FUN_003195a0("vector::reserve")" (identifier "FUN_003195a0") (argument_list "("vector::reserve")" (( "(") (string_literal ""vector::reserve"" (" """) (string_content "vector::reserve") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)param_1[0xb]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (if_statement "if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" (if "if") (parenthesized_expression "((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1)" (( "(") (binary_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1" (call_expression "(ulong)(param_1[0xd] - (long)puVar7 >> 4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(param_1[0xd] - (long)puVar7 >> 4)" (( "(") (binary_expression "param_1[0xd] - (long)puVar7 >> 4" (binary_expression "param_1[0xd] - (long)puVar7" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (- "-") (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7"))) (>> ">>") (number_literal "4")) () ")"))) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = uVar1 * 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\n      if (uVar1 != 0) goto LAB_0015358d;\n      puVar5 = (undefined8 *)0x0;\n      puVar13 = puVar5;\n      puVar9 = puVar7;\njoined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }\n      if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }\n      param_1[0xb] = puVar13;\n      param_1[0xd] = (long)puVar13 + lVar14;\n      param_1[0xc] = lVar11 + (long)puVar13;\n      goto LAB_001535fc;\n    }" ({ "{") (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" (identifier "puVar10") (= "=") (cast_expression "(undefined8 *)param_1[0xc]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "lVar14 = uVar1 * 0x10;" (assignment_expression "lVar14 = uVar1 * 0x10" (identifier "lVar14") (= "=") (binary_expression "uVar1 * 0x10" (identifier "uVar1") (* "*") (number_literal "0x10"))) (; ";")) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" (identifier "lVar11") (= "=") (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (- "-") (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")))) (; ";")) (if_statement "if (uVar1 != 0) goto LAB_0015358d;" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0015358d;" (goto "goto") (statement_identifier "LAB_0015358d") (; ";"))) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" (identifier "puVar13") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar9 = puVar7;" (assignment_expression "puVar9 = puVar7" (identifier "puVar9") (= "=") (identifier "puVar7")) (; ";")) (labeled_statement "joined_r0x001535b6:\n      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" (statement_identifier "joined_r0x001535b6") (: ":") (for_statement "for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" (for "for") (( "(") (; ";") (binary_expression "puVar7 != puVar10" (identifier "puVar7") (!= "!=") (identifier "puVar10")) (; ";") (assignment_expression "puVar7 = puVar7 + 2" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 2" (identifier "puVar7") (+ "+") (number_literal "2"))) () ")") (compound_statement "{\n        uVar2 = puVar7[1];\n        *puVar5 = *puVar7;\n        puVar5[1] = uVar2;\n        puVar5 = puVar5 + 2;\n      }" ({ "{") (expression_statement "uVar2 = puVar7[1];" (assignment_expression "uVar2 = puVar7[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar5 = *puVar7;" (assignment_expression "*puVar5 = *puVar7" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (expression_statement "puVar5[1] = uVar2;" (assignment_expression "puVar5[1] = uVar2" (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar5 = puVar5 + 2;" (assignment_expression "puVar5 = puVar5 + 2" (identifier "puVar5") (= "=") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2"))) (; ";")) (} "}")))) (if_statement "if (puVar9 != (undefined8 *)0x0) {\n        FUN_002dac70();\n      }" (if "if") (parenthesized_expression "(puVar9 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar9 != (undefined8 *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        FUN_002dac70();\n      }" ({ "{") (expression_statement "FUN_002dac70();" (call_expression "FUN_002dac70()" (identifier "FUN_002dac70") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[0xb] = puVar13;" (assignment_expression "param_1[0xb] = puVar13" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "puVar13")) (; ";")) (expression_statement "param_1[0xd] = (long)puVar13 + lVar14;" (assignment_expression "param_1[0xd] = (long)puVar13 + lVar14" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "(long)puVar13 + lVar14" (cast_expression "(long)puVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar13")) (+ "+") (identifier "lVar14"))) (; ";")) (expression_statement "param_1[0xc] = lVar11 + (long)puVar13;" (assignment_expression "param_1[0xc] = lVar11 + (long)puVar13" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "lVar11 + (long)puVar13" (identifier "lVar11") (+ "+") (cast_expression "(long)puVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar13")))) (; ";")) (goto_statement "goto LAB_001535fc;" (goto "goto") (statement_identifier "LAB_001535fc") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" (else "else") (compound_statement "{\n    puVar7 = (undefined8 *)param_1[0xb];\n    if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }\nLAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }\n  }" ({ "{") (expression_statement "puVar7 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar7 = (undefined8 *)param_1[0xb]" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)param_1[0xb]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (if_statement "if (puVar7 == (undefined8 *)param_1[0xd]) {\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" (if "if") (parenthesized_expression "(puVar7 == (undefined8 *)param_1[0xd])" (( "(") (binary_expression "puVar7 == (undefined8 *)param_1[0xd]" (identifier "puVar7") (== "==") (cast_expression "(undefined8 *)param_1[0xd]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")))) () ")")) (compound_statement "{\n      puVar10 = (undefined8 *)param_1[0xc];\n      lVar14 = 0x10;\n      lVar11 = (long)puVar10 - (long)puVar7;\nLAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);\n      puVar13 = puVar5;\n      puVar9 = (undefined8 *)param_1[0xb];\n      goto joined_r0x001535b6;\n    }" ({ "{") (expression_statement "puVar10 = (undefined8 *)param_1[0xc];" (assignment_expression "puVar10 = (undefined8 *)param_1[0xc]" (identifier "puVar10") (= "=") (cast_expression "(undefined8 *)param_1[0xc]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (expression_statement "lVar14 = 0x10;" (assignment_expression "lVar14 = 0x10" (identifier "lVar14") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "lVar11 = (long)puVar10 - (long)puVar7;" (assignment_expression "lVar11 = (long)puVar10 - (long)puVar7" (identifier "lVar11") (= "=") (binary_expression "(long)puVar10 - (long)puVar7" (cast_expression "(long)puVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar10")) (- "-") (cast_expression "(long)puVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar7")))) (; ";")) (labeled_statement "LAB_0015358d:\n      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" (statement_identifier "LAB_0015358d") (: ":") (expression_statement "puVar5 = (undefined8 *)FUN_002d94a0(lVar14);" (assignment_expression "puVar5 = (undefined8 *)FUN_002d94a0(lVar14)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(lVar14)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(lVar14)" (identifier "FUN_002d94a0") (argument_list "(lVar14)" (( "(") (identifier "lVar14") () ")"))))) (; ";"))) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" (identifier "puVar13") (= "=") (identifier "puVar5")) (; ";")) (expression_statement "puVar9 = (undefined8 *)param_1[0xb];" (assignment_expression "puVar9 = (undefined8 *)param_1[0xb]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)param_1[0xb]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (goto_statement "goto joined_r0x001535b6;" (goto "goto") (statement_identifier "joined_r0x001535b6") (; ";")) (} "}"))) (labeled_statement "LAB_001535fc:\n    if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" (statement_identifier "LAB_001535fc") (: ":") (if_statement "if (pcVar8 <= pcVar3) {\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" (if "if") (parenthesized_expression "(pcVar8 <= pcVar3)" (( "(") (binary_expression "pcVar8 <= pcVar3" (identifier "pcVar8") (<= "<=") (identifier "pcVar3")) () ")")) (compound_statement "{\n      lVar11 = 0;\n      goto LAB_00153517;\n    }" ({ "{") (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00153517;" (goto "goto") (statement_identifier "LAB_00153517") (; ";")) (} "}")))) (} "}")))) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar12 = pcVar3;" (assignment_expression "pcVar12 = pcVar3" (identifier "pcVar12") (= "=") (identifier "pcVar3")) (; ";")) (do_statement "do {\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  } while (pcVar12 < pcVar8);" (do "do") (compound_statement "{\n    sVar4 = strlen(pcVar12);\n    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);\n    local_58 = lVar11;\n    FUN_00166280(param_1 + 0xb,&local_58);\n    pcVar12 = pcVar12 + sVar4 + 1;\n    lVar11 = lVar11 + sVar4 + 1;\n  }" ({ "{") (expression_statement "sVar4 = strlen(pcVar12);" (assignment_expression "sVar4 = strlen(pcVar12)" (identifier "sVar4") (= "=") (call_expression "strlen(pcVar12)" (identifier "strlen") (argument_list "(pcVar12)" (( "(") (identifier "pcVar12") () ")")))) (; ";")) (expression_statement "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);" (assignment_expression "local_50 = FUN_00151aa0(param_2,pcVar12,sVar4)" (identifier "local_50") (= "=") (call_expression "FUN_00151aa0(param_2,pcVar12,sVar4)" (identifier "FUN_00151aa0") (argument_list "(param_2,pcVar12,sVar4)" (( "(") (identifier "param_2") (, ",") (identifier "pcVar12") (, ",") (identifier "sVar4") () ")")))) (; ";")) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" (identifier "local_58") (= "=") (identifier "lVar11")) (; ";")) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" (identifier "FUN_00166280") (argument_list "(param_1 + 0xb,&local_58)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (expression_statement "pcVar12 = pcVar12 + sVar4 + 1;" (assignment_expression "pcVar12 = pcVar12 + sVar4 + 1" (identifier "pcVar12") (= "=") (binary_expression "pcVar12 + sVar4 + 1" (binary_expression "pcVar12 + sVar4" (identifier "pcVar12") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar11 = lVar11 + sVar4 + 1;" (assignment_expression "lVar11 = lVar11 + sVar4 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + sVar4 + 1" (binary_expression "lVar11 + sVar4" (identifier "lVar11") (+ "+") (identifier "sVar4")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar12 < pcVar8)" (( "(") (binary_expression "pcVar12 < pcVar8" (identifier "pcVar12") (< "<") (identifier "pcVar8")) () ")")) (; ";")) (labeled_statement "LAB_00153517:\n  local_50 = 0;" (statement_identifier "LAB_00153517") (: ":") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";"))) (expression_statement "local_58 = lVar11;" (assignment_expression "local_58 = lVar11" (identifier "local_58") (= "=") (identifier "lVar11")) (; ";")) (expression_statement "FUN_00166280(param_1 + 0xb,&local_58);" (call_expression "FUN_00166280(param_1 + 0xb,&local_58)" (identifier "FUN_00166280") (argument_list "(param_1 + 0xb,&local_58)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")"))) (; ";")) (if_statement "if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" (if "if") (parenthesized_expression "((local_61 != '\0') && (pcVar3 != (char *)0x0))" (( "(") (binary_expression "(local_61 != '\0') && (pcVar3 != (char *)0x0)" (parenthesized_expression "(local_61 != '\0')" (( "(") (binary_expression "local_61 != '\0'" (identifier "local_61") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3 != (char *)0x0)" (( "(") (binary_expression "pcVar3 != (char *)0x0" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n    thunk_FUN_002dac70(pcVar3);\n    return;\n  }" ({ "{") (expression_statement "thunk_FUN_002dac70(pcVar3);" (call_expression "thunk_FUN_002dac70(pcVar3)" (identifier "thunk_FUN_002dac70") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void add_strings(Dwo_file * this, Dwp_output_file * output_file, uint
   debug_str) */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *output_file,type_3 debug_str)

{
  type_4 var_14;
  char *pcVar2;
  type_5 *var_5;
  size_t var_12;
  type_6 var_20;
  char *format;
  type_6 var_18;
  type_5 *var_9;
  type_6 var_21;
  type_6 var_19;
  long var_24;
  long var_13;
  type_5 *var_11;
  type_6 ppVar13;
  type_4 var_23;
  bool var_27;
  type_7 var_6;
  var_1<var_2,var_3> local_58 [2];
  
  var_5 = Object::var_4
                     (&this->obj_->super_Object,debug_str,&var_6,&var_27,(uint64_t *)0x0);
  var_9 = var_5 + var_6;
  if (var_9[-1] != '\0') {
    (*(this->obj_->super_Object)._vptr_Object[0x10])(local_58,this->obj_,(type_4)debug_str);
    pcVar2 = this->name_;
    format = (char *)var_7("%s: last entry in string section \'%s\' is not null terminated");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */
    var_8(format,pcVar2,local_58[0].first);
  }
  if (var_5 < var_9) {
    var_11 = var_5;
    var_24 = 0;
    do {
      var_13 = var_24;
      var_12 = var_10((char *)var_11);
      var_11 = var_11 + var_12 + 1;
      var_24 = var_13 + 1;
    } while (var_11 < var_9);
    var_14 = var_13 + 2;
    if (0xfffffffffffffff < var_14) {
                    /* WARNING: Subroutine does not return */
      std::var_15("vector::reserve");
    }
    var_18 = (this->str_offset_map_).
             super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
             ._M_impl._M_start;
    if ((type_4)((long)(this->str_offset_map_).
                      super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
                      ._M_impl._M_end_of_storage - (long)var_18 >> 4) < var_14) {
      var_19 = (this->str_offset_map_).
               super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
               ._M_impl._M_finish;
      var_23 = var_14 * 0x10;
      var_24 = (long)var_19 - (long)var_18;
      if (var_14 != 0) goto LAB_0015358d;
      var_20 = (type_6)0x0;
      ppVar13 = var_20;
      var_21 = var_18;
joined_r0x001535b6:
      for (; var_18 != var_19; var_18 = var_18 + 1) {
        var_13 = var_18->second;
        var_20->first = var_18->first;
        var_20->second = var_13;
        var_20 = var_20 + 1;
      }
      if (var_21 != (type_6)0x0) {
        var_22(var_21);
      }
      (this->str_offset_map_).
      super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
      ._M_impl._M_start = ppVar13;
      (this->str_offset_map_).
      super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
      ._M_impl._M_end_of_storage = (type_6)((long)&ppVar13->first + var_23);
      (this->str_offset_map_).
      super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
      ._M_impl._M_finish = (type_6)((long)&ppVar13->first + var_24);
      goto LAB_001535fc;
    }
  }
  else {
    var_18 = (this->str_offset_map_).
             super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
             ._M_impl._M_start;
    if (var_18 == (this->str_offset_map_).
                  super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
                  ._M_impl._M_end_of_storage) {
      var_19 = (this->str_offset_map_).
               super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
               ._M_impl._M_finish;
      var_23 = 0x10;
      var_24 = (long)var_19 - (long)var_18;
LAB_0015358d:
      var_20 = (type_6)var_25(var_23);
      ppVar13 = var_20;
      var_21 = (this->str_offset_map_).
               super__Vector_base<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>
               ._M_impl._M_start;
      goto joined_r0x001535b6;
    }
LAB_001535fc:
    if (var_9 <= var_5) {
      var_24 = 0;
      goto LAB_00153517;
    }
  }
  var_24 = 0;
  var_11 = var_5;
  do {
    var_12 = var_10((char *)var_11);
    local_58[0].second = type_2::var_26(output_file,(char *)var_11,var_12);
    local_58[0].first = var_24;
    std::vector<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>::
    emplace_back<var_17::var_1<var_2,var_3>var_16>(&this->str_offset_map_,local_58);
    var_11 = var_11 + var_12 + 1;
    var_24 = var_24 + var_12 + 1;
  } while (var_11 < var_9);
LAB_00153517:
  local_58[0].second = 0;
  local_58[0].first = var_24;
  std::vector<var_17::var_1<var_2,var_3>,_std::allocator<var_17::var_1<var_2,var_3>var_16>var_16>::
  emplace_back<var_17::var_1<var_2,var_3>var_16>(&this->str_offset_map_,local_58);
  if ((var_27 != false) && (var_5 != (type_5 *)0x0)) {
    var_28(var_5);
    return;
  }
  return;
}


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

void MASKED(undefined8 *param_1,undefined8 param_2,undefined4 param_3)

{
  ulong uVar1;
  undefined8 uVar2;
  char *pcVar3;
  size_t sVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 *puVar7;
  char *pcVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  long lVar11;
  char *pcVar12;
  undefined8 *puVar13;
  long lVar14;
  char local_61;
  long local_60;
  long local_58;
  undefined8 local_50;
  
  pcVar3 = (char *)FUN_001bd870(param_1[1],param_3,&local_60,&local_61,0);
  pcVar8 = pcVar3 + local_60;
  if (pcVar8[-1] != '\0') {
    (**(code **)(*(long *)param_1[1] + 0x80))(&local_58,(long *)param_1[1],param_3);
    uVar2 = *param_1;
    uVar6 = gettext("%s: last entry in string section \'%s\' is not null terminated");
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00153685 to 00153689 has its CatchHandler @ 0015368a */
    FUN_001781e0(uVar6,uVar2,local_58);
  }
  if (pcVar3 < pcVar8) {
    pcVar12 = pcVar3;
    lVar11 = 0;
    do {
      lVar14 = lVar11;
      sVar4 = strlen(pcVar12);
      pcVar12 = pcVar12 + sVar4 + 1;
      lVar11 = lVar14 + 1;
    } while (pcVar12 < pcVar8);
    uVar1 = lVar14 + 2;
    if (0xfffffffffffffff < uVar1) {
                    /* WARNING: Subroutine does not return */
      FUN_003195a0("vector::reserve");
    }
    puVar7 = (undefined8 *)param_1[0xb];
    if ((ulong)(param_1[0xd] - (long)puVar7 >> 4) < uVar1) {
      puVar10 = (undefined8 *)param_1[0xc];
      lVar14 = uVar1 * 0x10;
      lVar11 = (long)puVar10 - (long)puVar7;
      if (uVar1 != 0) goto LAB_0015358d;
      puVar5 = (undefined8 *)0x0;
      puVar13 = puVar5;
      puVar9 = puVar7;
joined_r0x001535b6:
      for (; puVar7 != puVar10; puVar7 = puVar7 + 2) {
        uVar2 = puVar7[1];
        *puVar5 = *puVar7;
        puVar5[1] = uVar2;
        puVar5 = puVar5 + 2;
      }
      if (puVar9 != (undefined8 *)0x0) {
        FUN_002dac70();
      }
      param_1[0xb] = puVar13;
      param_1[0xd] = (long)puVar13 + lVar14;
      param_1[0xc] = lVar11 + (long)puVar13;
      goto LAB_001535fc;
    }
  }
  else {
    puVar7 = (undefined8 *)param_1[0xb];
    if (puVar7 == (undefined8 *)param_1[0xd]) {
      puVar10 = (undefined8 *)param_1[0xc];
      lVar14 = 0x10;
      lVar11 = (long)puVar10 - (long)puVar7;
LAB_0015358d:
      puVar5 = (undefined8 *)FUN_002d94a0(lVar14);
      puVar13 = puVar5;
      puVar9 = (undefined8 *)param_1[0xb];
      goto joined_r0x001535b6;
    }
LAB_001535fc:
    if (pcVar8 <= pcVar3) {
      lVar11 = 0;
      goto LAB_00153517;
    }
  }
  lVar11 = 0;
  pcVar12 = pcVar3;
  do {
    sVar4 = strlen(pcVar12);
    local_50 = FUN_00151aa0(param_2,pcVar12,sVar4);
    local_58 = lVar11;
    FUN_00166280(param_1 + 0xb,&local_58);
    pcVar12 = pcVar12 + sVar4 + 1;
    lVar11 = lVar11 + sVar4 + 1;
  } while (pcVar12 < pcVar8);
LAB_00153517:
  local_50 = 0;
  local_58 = lVar11;
  FUN_00166280(param_1 + 0xb,&local_58);
  if ((local_61 != '\0') && (pcVar3 != (char *)0x0)) {
    thunk_FUN_002dac70(pcVar3);
    return;
  }
  return;
}

