
/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,
   off_t offset) */

void __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)

{
  string *this_00;
  int *piVar1;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *paVar2;
  byte bVar3;
  undefined8 uVar4;
  bool bVar5;
  Position_dependent_options *pPVar6;
  long lVar7;
  long lVar8;
  ulong uVar9;
  ulong uVar10;
  pointer pcVar11;
  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
  *__dest;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;
  
  this_00 = &(this->super_Object).name_;
  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0;
  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;
  pcVar11 = (name->_M_dataplus)._M_p;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);
  (this->super_Object).input_file_ = input_file;
  (this->super_Object).offset_ = offset;
  (this->super_Object).shnum_ = 0xffffffff;
  (this->super_Object).xindex_ = (Xindex *)0x0;
  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;
  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;
  if (input_file == (Input_file *)0x0) {
    (this->soname_).field_2._M_local_buf[0] = '\0';
    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;
    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;
    (this->soname_)._M_string_length = 0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_start = (pointer)0x0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_finish = (pointer)0x0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_end_of_storage = (pointer)0x0;
    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */
    std::string::_M_assign((string *)&this->soname_,(string *)name);
    return;
  }
  piVar1 = &(input_file->file_).object_count_;
  *piVar1 = *piVar1 + 1;
                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */
  bVar5 = Input_file::is_in_system_directory(input_file);
  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5;
  pPVar6 = Input_file::options(input_file);
  bVar5 = pPVar6->as_needed_;
  paVar2 = &(this->soname_).field_2;
  (this->soname_).field_2._M_local_buf[0] = '\0';
  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;
  (this->soname_)._M_string_length = 0;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  ._M_impl._M_start = (pointer)0x0;
  bVar3 = (this->super_Object).field_0x3c;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  ._M_impl._M_finish = (pointer)0x0;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
  ._M_impl._M_end_of_storage = (pointer)0x0;
  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
  (this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6);
  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;
                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */
  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);
  if ((this->super_Object).offset_ == 0) {
    return;
  }
  lVar7 = std::string::find((string *)this_00,'(',0);
  lVar8 = std::string::find((string *)this_00,')',0);
  if (lVar7 == -1) {
    return;
  }
  if (lVar8 == -1) {
    return;
  }
  uVar9 = (this->super_Object).name_._M_string_length;
  uVar10 = lVar7 + 1;
  if (uVar9 < uVar10) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */
    std::__throw_out_of_range_fmt
              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
               uVar10);
  }
  uVar9 = uVar9 - uVar10;
  local_58._M_dataplus._M_p = (pointer)&local_58.field_2;
  pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10;
  if (lVar8 - uVar10 < uVar9) {
    uVar9 = lVar8 - uVar10;
  }
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);
  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
            *)(this->soname_)._M_dataplus._M_p;
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_58._M_dataplus._M_p == &local_58.field_2) {
    if (local_58._M_string_length != 0) {
      if (local_58._M_string_length == 1) {
        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];
        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                  *)(this->soname_)._M_dataplus._M_p;
      }
      else {
        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);
        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                  *)(this->soname_)._M_dataplus._M_p;
      }
    }
    (this->soname_)._M_string_length = local_58._M_string_length;
    __dest->_M_local_buf[local_58._M_string_length] = '\0';
    uVar4 = local_58.field_2._M_allocated_capacity;
  }
  else {
    if (__dest == paVar2) {
      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;
      (this->soname_)._M_string_length = local_58._M_string_length;
      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;
    }
    else {
      uVar4 = (this->soname_).field_2._M_allocated_capacity;
      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;
      (this->soname_)._M_string_length = local_58._M_string_length;
      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;
      local_58._M_dataplus._M_p = (pointer)__dest;
      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
                     *)0x0) goto LAB_0024016a;
    }
    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;
    uVar4 = local_58.field_2._M_allocated_capacity;
  }
LAB_0024016a:
  local_58.field_2._M_allocated_capacity = uVar4;
  local_58._M_string_length = 0;
  *local_58._M_dataplus._M_p = '\0';
  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9
       *)local_58._M_dataplus._M_p != &local_58.field_2) {
    operator_delete(local_58._M_dataplus._M_p);
  }
  return;
}



void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)

{
  byte bVar1;
  undefined8 uVar2;
  uint uVar3;
  byte *pbVar4;
  long lVar5;
  long lVar6;
  ulong uVar7;
  ulong uVar8;
  undefined8 *puVar9;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48 [3];
  
  puVar9 = param_1 + 1;
  *param_1 = &DAT_003b39b0;
  param_1[1] = param_1 + 3;
  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);
  param_1[5] = param_3;
  param_1[6] = param_4;
  *(undefined4 *)(param_1 + 7) = 0xffffffff;
  param_1[8] = 0;
  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;
  param_1[9] = 0;
  if (param_3 == 0) {
    *(undefined1 *)(param_1 + 0xc) = 0;
    param_1[10] = param_1 + 0xc;
    *param_1 = &DAT_003b4928;
    param_1[0xb] = 0;
    param_1[0xe] = 0;
    param_1[0xf] = 0;
    param_1[0x10] = 0;
    *(undefined4 *)(param_1 + 0x11) = 0;
                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */
    FUN_0027d940(param_1 + 10,param_2);
    return;
  }
  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;
                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */
  uVar3 = FUN_0016afa0(param_3);
  *(byte *)((long)param_1 + 0x3c) =
       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);
  pbVar4 = (byte *)FUN_0016af80(param_3);
  bVar1 = *pbVar4;
  *(undefined1 *)(param_1 + 0xc) = 0;
  param_1[10] = param_1 + 0xc;
  param_1[0xb] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  *(undefined4 *)(param_1 + 0x11) = 0;
  *(byte *)((long)param_1 + 0x3c) =
       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);
  *param_1 = &DAT_003b4928;
                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */
  FUN_0027d940(param_1 + 10,param_3 + 8);
  if (param_1[6] == 0) {
    return;
  }
  lVar5 = FUN_0027f490(puVar9,0x28,0);
  lVar6 = FUN_0027f490(puVar9,0x29,0);
  if (lVar5 == -1) {
    return;
  }
  if (lVar6 == -1) {
    return;
  }
  uVar8 = lVar5 + 1;
  if ((ulong)param_1[2] < uVar8) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */
    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
                 uVar8);
  }
  uVar7 = param_1[2] - uVar8;
  local_58 = local_48;
  if (lVar6 - uVar8 < uVar7) {
    uVar7 = lVar6 - uVar8;
  }
  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);
  puVar9 = (undefined8 *)param_1[10];
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)puVar9 = (undefined1)local_48[0];
        puVar9 = (undefined8 *)param_1[10];
      }
      else {
        memcpy(puVar9,local_58,local_50);
        puVar9 = (undefined8 *)param_1[10];
      }
    }
    param_1[0xb] = local_50;
    *(undefined1 *)((long)puVar9 + local_50) = 0;
    uVar2 = local_48[0];
  }
  else {
    if (puVar9 == param_1 + 0xc) {
      param_1[10] = local_58;
      param_1[0xb] = local_50;
      param_1[0xc] = local_48[0];
    }
    else {
      uVar2 = param_1[0xc];
      param_1[10] = local_58;
      param_1[0xb] = local_50;
      param_1[0xc] = local_48[0];
      local_58 = puVar9;
      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;
    }
    local_58 = local_48;
    uVar2 = local_48[0];
  }
LAB_0024016a:
  local_48[0] = uVar2;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_00276d20();
  }
  return;
}


PUSH R15
MOV R8,RSI
MOV R15,RCX
PUSH R14
LEA R14,[0x3b39b0]
PUSH R13
LEA R13,[RDI + 0x18]
PUSH R12
LEA R12,[RDI + 0x8]
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RDI
SUB RSP,0x38
MOV qword ptr [RDI],R14
MOV qword ptr [RDI + 0x8],R13
MOV RDX,qword ptr [R8 + 0x8]
MOV RDI,R12
MOV RSI,qword ptr [RSI]
MOV qword ptr [RSP + 0x8],R8
ADD RDX,RSI
CALL 0x0015d030
MOVZX EAX,byte ptr [RBX + 0x3c]
MOV qword ptr [RBX + 0x28],RBP
MOV qword ptr [RBX + 0x30],R15
MOV R8,qword ptr [RSP + 0x8]
AND EAX,0xffffff80
MOV dword ptr [RBX + 0x38],0xffffffff
OR EAX,0x1
TEST RBP,RBP
MOV qword ptr [RBX + 0x40],0x0
MOV byte ptr [RBX + 0x3c],AL
MOV qword ptr [RBX + 0x48],0x0
JZ 0x00240198
ADD dword ptr [RBP + 0x50],0x1
MOV RDI,RBP
CALL 0x0016afa0
AND EAX,0x1
MOV RDI,RBP
SHL EAX,0x5
MOV EDX,EAX
MOVZX EAX,byte ptr [RBX + 0x3c]
AND EAX,0xffffffdf
OR EAX,EDX
MOV byte ptr [RBX + 0x3c],AL
CALL 0x0016af80
MOVZX EAX,byte ptr [RAX]
LEA R15,[RBX + 0x60]
MOV byte ptr [RBX + 0x60],0x0
LEA RDI,[RBX + 0x50]
MOV qword ptr [RBX + 0x50],R15
LEA RSI,[RBP + 0x8]
AND EAX,0x1
MOV qword ptr [RBX + 0x58],0x0
SHL EAX,0x6
MOV qword ptr [RBX + 0x70],0x0
MOV EDX,EAX
MOVZX EAX,byte ptr [RBX + 0x3c]
MOV qword ptr [RBX + 0x78],0x0
MOV qword ptr [RBX + 0x80],0x0
MOV dword ptr [RBX + 0x88],0x0
AND EAX,0xffffffbf
OR EAX,EDX
MOV byte ptr [RBX + 0x3c],AL
LEA RAX,[0x3b4928]
MOV qword ptr [RBX],RAX
LEA RAX,[RBX + 0x70]
MOV qword ptr [RSP + 0x8],RAX
CALL 0x0027d940
CMP qword ptr [RBX + 0x30],0x0
JNZ 0x002400b0
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
XOR EDX,EDX
MOV ESI,0x28
MOV RDI,R12
CALL 0x0027f490
XOR EDX,EDX
MOV ESI,0x29
MOV RDI,R12
MOV RBP,RAX
CALL 0x0027f490
CMP RBP,-0x1
JZ 0x002400a0
CMP RAX,-0x1
JZ 0x002400a0
MOV RCX,qword ptr [RBX + 0x10]
ADD RBP,0x1
SUB RAX,RBP
CMP RBP,RCX
JA 0x0024025d
MOV RSI,qword ptr [RBX + 0x8]
SUB RCX,RBP
LEA R12,[RSP + 0x10]
LEA RDX,[R12 + 0x10]
MOV RDI,R12
ADD RSI,RBP
CMP RCX,RAX
MOV qword ptr [RSP + 0x10],RDX
CMOVA RCX,RAX
LEA RDX,[RSI + RCX*0x1]
CALL 0x0015cbe0
MOV RSI,qword ptr [RSP + 0x10]
LEA RAX,[R12 + 0x10]
MOV RDI,qword ptr [RBX + 0x50]
MOV RDX,qword ptr [RSP + 0x18]
CMP RSI,RAX
JZ 0x00240220
MOV RAX,qword ptr [RSP + 0x20]
CMP RDI,R15
JZ 0x00240200
MOV RCX,qword ptr [RBX + 0x60]
MOV qword ptr [RBX + 0x50],RSI
MOV qword ptr [RBX + 0x58],RDX
MOV qword ptr [RBX + 0x60],RAX
TEST RDI,RDI
JZ 0x0024020c
MOV qword ptr [RSP + 0x10],RDI
MOV qword ptr [RSP + 0x20],RCX
MOV qword ptr [RSP + 0x18],0x0
ADD R12,0x10
MOV byte ptr [RDI],0x0
MOV RDI,qword ptr [RSP + 0x10]
CMP RDI,R12
JZ 0x002400a0
CALL 0x00276d20
JMP 0x002400a0
LEA R15,[RBX + 0x60]
MOV byte ptr [RBX + 0x60],0x0
LEA RDI,[RBX + 0x50]
MOV RSI,R8
LEA RAX,[0x3b4928]
MOV qword ptr [RBX + 0x50],R15
MOV qword ptr [RBX],RAX
MOV qword ptr [RBX + 0x58],0x0
MOV qword ptr [RBX + 0x70],0x0
MOV qword ptr [RBX + 0x78],0x0
MOV qword ptr [RBX + 0x80],0x0
MOV dword ptr [RBX + 0x88],0x0
CALL 0x0027d940
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [RBX + 0x50],RSI
MOV qword ptr [RBX + 0x58],RDX
MOV qword ptr [RBX + 0x60],RAX
LEA RDI,[R12 + 0x10]
MOV qword ptr [RSP + 0x10],RDI
JMP 0x0024016a
TEST RDX,RDX
JZ 0x00240239
CMP RDX,0x1
JZ 0x0024024b
CALL 0x0013eaa0
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RBX + 0x50]
MOV qword ptr [RBX + 0x58],RDX
MOV byte ptr [RDI + RDX*0x1],0x0
MOV RDI,qword ptr [RSP + 0x10]
JMP 0x0024016a
MOVZX EAX,byte ptr [RSP + 0x20]
MOV byte ptr [RDI],AL
MOV RDX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RBX + 0x50]
JMP 0x00240239
MOV RDX,RBP
LEA RSI,[0x314be8]
LEA RDI,[0x311130]
XOR EAX,EAX
CALL 0x002b56d0
(translation_unit "void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}\n\n" (function_definition "void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" identifier (parameter_list "(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = &DAT_003b39b0;" (assignment_expression "*param_1 = &DAT_003b39b0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b39b0" & identifier)) ;) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);" (call_expression "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2)" identifier (argument_list "(puVar9,*param_2,param_2[1] + *param_2)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "param_1[5] = param_3;" (assignment_expression "param_1[5] = param_3" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = param_4;" (assignment_expression "param_1[6] = param_4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 7) = 0xffffffff;" (assignment_expression "*(undefined4 *)(param_1 + 7) = 0xffffffff" (pointer_expression "*(undefined4 *)(param_1 + 7)" * (cast_expression "(undefined4 *)(param_1 + 7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b4928" & identifier)) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" * (cast_expression "(undefined4 *)(param_1 + 0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "FUN_0027d940(param_1 + 10,param_2);" (call_expression "FUN_0027d940(param_1 + 10,param_2)" identifier (argument_list "(param_1 + 10,param_2)" ( (binary_expression "param_1 + 10" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;" (assignment_expression "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" * (cast_expression "(int *)(param_3 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" * (cast_expression "(int *)(param_3 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) + number_literal)) ;) comment (expression_statement "uVar3 = FUN_0016afa0(param_3);" (assignment_expression "uVar3 = FUN_0016afa0(param_3)" identifier = (call_expression "FUN_0016afa0(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (call_expression "(byte)((uVar3 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar3 & 1) << 5)" ( (binary_expression "(uVar3 & 1) << 5" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "pbVar4 = (byte *)FUN_0016af80(param_3);" (assignment_expression "pbVar4 = (byte *)FUN_0016af80(param_3)" identifier = (cast_expression "(byte *)FUN_0016af80(param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016af80(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" * (cast_expression "(undefined4 *)(param_1 + 0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 6)" ( (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b4928" & identifier)) ;) comment (expression_statement "FUN_0027d940(param_1 + 10,param_3 + 8);" (call_expression "FUN_0027d940(param_1 + 10,param_3 + 8)" identifier (argument_list "(param_1 + 10,param_3 + 8)" ( (binary_expression "param_1 + 10" identifier + number_literal) , (binary_expression "param_3 + 8" identifier + number_literal) ))) ;) (if_statement "if (param_1[6] == 0) {\n    return;\n  }" if (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar5 = FUN_0027f490(puVar9,0x28,0);" (assignment_expression "lVar5 = FUN_0027f490(puVar9,0x28,0)" identifier = (call_expression "FUN_0027f490(puVar9,0x28,0)" identifier (argument_list "(puVar9,0x28,0)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar6 = FUN_0027f490(puVar9,0x29,0);" (assignment_expression "lVar6 = FUN_0027f490(puVar9,0x29,0)" identifier = (call_expression "FUN_0027f490(puVar9,0x29,0)" identifier (argument_list "(puVar9,0x29,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar5 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (lVar6 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = lVar5 + 1;" (assignment_expression "uVar8 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_1[2] < uVar8) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" if (parenthesized_expression "((ulong)param_1[2] < uVar8)" ( (binary_expression "(ulong)param_1[2] < uVar8" (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" { comment comment (expression_statement "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);" (call_expression "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar7 = param_1[2] - uVar8;" (assignment_expression "uVar7 = param_1[2] - uVar8" identifier = (binary_expression "param_1[2] - uVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (if_statement "if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }" if (parenthesized_expression "(lVar6 - uVar8 < uVar7)" ( (binary_expression "lVar6 - uVar8 < uVar7" (binary_expression "lVar6 - uVar8" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar7 = lVar6 - uVar8;\n  }" { (expression_statement "uVar7 = lVar6 - uVar8;" (assignment_expression "uVar7 = lVar6 - uVar8" identifier = (binary_expression "lVar6 - uVar8" identifier - identifier)) ;) })) (expression_statement "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);" (call_expression "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" identifier (argument_list "(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) , (binary_expression "param_1[1] + uVar8 + uVar7" (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) + identifier) ))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }" { (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" else (compound_statement "{\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" { (expression_statement "memcpy(puVar9,local_58,local_50);" (call_expression "memcpy(puVar9,local_58,local_50)" identifier (argument_list "(puVar9,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)puVar9 + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + local_50) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + local_50)" * (cast_expression "(undefined1 *)((long)puVar9 + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + local_50)" ( (binary_expression "(long)puVar9 + local_50" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" else (compound_statement "{\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" if (parenthesized_expression "(puVar9 == param_1 + 0xc)" ( (binary_expression "puVar9 == param_1 + 0xc" identifier == (binary_expression "param_1 + 0xc" identifier + number_literal)) )) (compound_statement "{\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }" { (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" else (compound_statement "{\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" { (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_58 = puVar9;" (assignment_expression "local_58 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;" 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)) )) (goto_statement "goto LAB_0024016a;" goto statement_identifier ;)) }))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0024016a:\n  local_48[0] = uVar2;" statement_identifier : (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,\n   off_t offset) */\n\nvoid __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)\n\n{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  byte bVar3;\n  undefined8 uVar4;\n  bool bVar5;\n  Position_dependent_options *pPVar6;\n  long lVar7;\n  long lVar8;\n  ulong uVar9;\n  ulong uVar10;\n  pointer pcVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  this_00 = &(this->super_Object).name_;\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar11 = (name->_M_dataplus)._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n    (this->soname_)._M_string_length = 0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  bVar5 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5;\n  pPVar6 = Input_file::options(input_file);\n  bVar5 = pPVar6->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_)._M_string_length = 0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0;\n  bVar3 = (this->super_Object).field_0x3c;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if ((this->super_Object).offset_ == 0) {\n    return;\n  }\n  lVar7 = std::string::find((string *)this_00,'(',0);\n  lVar8 = std::string::find((string *)this_00,')',0);\n  if (lVar7 == -1) {\n    return;\n  }\n  if (lVar8 == -1) {\n    return;\n  }\n  uVar9 = (this->super_Object).name_._M_string_length;\n  uVar10 = lVar7 + 1;\n  if (uVar9 < uVar10) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);\n  }\n  uVar9 = uVar9 - uVar10;\n  local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n  pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10;\n  if (lVar8 - uVar10 < uVar9) {\n    uVar9 = lVar8 - uVar10;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);\n  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }\n    (this->soname_)._M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\nLAB_0024016a:\n  local_58.field_2._M_allocated_capacity = uVar4;\n  local_58._M_string_length = 0;\n  *local_58._M_dataplus._M_p = '\0';\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall gold::Dynobj::Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)\n\n{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  byte bVar3;\n  undefined8 uVar4;\n  bool bVar5;\n  Position_dependent_options *pPVar6;\n  long lVar7;\n  long lVar8;\n  ulong uVar9;\n  ulong uVar10;\n  pointer pcVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  this_00 = &(this->super_Object).name_;\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar11 = (name->_M_dataplus)._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n    (this->soname_)._M_string_length = 0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  bVar5 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5;\n  pPVar6 = Input_file::options(input_file);\n  bVar5 = pPVar6->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_)._M_string_length = 0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0;\n  bVar3 = (this->super_Object).field_0x3c;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if ((this->super_Object).offset_ == 0) {\n    return;\n  }\n  lVar7 = std::string::find((string *)this_00,'(',0);\n  lVar8 = std::string::find((string *)this_00,')',0);\n  if (lVar7 == -1) {\n    return;\n  }\n  if (lVar8 == -1) {\n    return;\n  }\n  uVar9 = (this->super_Object).name_._M_string_length;\n  uVar10 = lVar7 + 1;\n  if (uVar9 < uVar10) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);\n  }\n  uVar9 = uVar9 - uVar10;\n  local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n  pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10;\n  if (lVar8 - uVar10 < uVar9) {\n    uVar9 = lVar8 - uVar10;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);\n  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }\n    (this->soname_)._M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\nLAB_0024016a:\n  local_58.field_2._M_allocated_capacity = uVar4;\n  local_58._M_string_length = 0;\n  *local_58._M_dataplus._M_p = '\0';\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Dynobj::" identifier : : identifier : :) (function_declarator "Dynobj(Dynobj *this,string *name,Input_file *input_file,off_t offset)" identifier (parameter_list "(Dynobj *this,string *name,Input_file *input_file,off_t offset)" ( (parameter_declaration "Dynobj *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "string *name" type_identifier (pointer_declarator "*name" * identifier)) , (parameter_declaration "Input_file *input_file" type_identifier (pointer_declarator "*input_file" * identifier)) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  string *this_00;\n  int *piVar1;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *paVar2;\n  byte bVar3;\n  undefined8 uVar4;\n  bool bVar5;\n  Position_dependent_options *pPVar6;\n  long lVar7;\n  long lVar8;\n  ulong uVar9;\n  ulong uVar10;\n  pointer pcVar11;\n  anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n  *__dest;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> local_58;\n  \n  this_00 = &(this->super_Object).name_;\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0;\n  (this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;\n  pcVar11 = (name->_M_dataplus)._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);\n  (this->super_Object).input_file_ = input_file;\n  (this->super_Object).offset_ = offset;\n  (this->super_Object).shnum_ = 0xffffffff;\n  (this->super_Object).xindex_ = (Xindex *)0x0;\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;\n  (this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;\n  if (input_file == (Input_file *)0x0) {\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n    (this->soname_)._M_string_length = 0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }\n  piVar1 = &(input_file->file_).object_count_;\n  *piVar1 = *piVar1 + 1;\n                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */\n  bVar5 = Input_file::is_in_system_directory(input_file);\n  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5;\n  pPVar6 = Input_file::options(input_file);\n  bVar5 = pPVar6->as_needed_;\n  paVar2 = &(this->soname_).field_2;\n  (this->soname_).field_2._M_local_buf[0] = '\0';\n  (this->soname_)._M_dataplus._M_p = (pointer)paVar2;\n  (this->soname_)._M_string_length = 0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0;\n  bVar3 = (this->super_Object).field_0x3c;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0;\n  (this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;\n  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n  (this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6);\n  (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */\n  std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);\n  if ((this->super_Object).offset_ == 0) {\n    return;\n  }\n  lVar7 = std::string::find((string *)this_00,'(',0);\n  lVar8 = std::string::find((string *)this_00,')',0);\n  if (lVar7 == -1) {\n    return;\n  }\n  if (lVar8 == -1) {\n    return;\n  }\n  uVar9 = (this->super_Object).name_._M_string_length;\n  uVar10 = lVar7 + 1;\n  if (uVar9 < uVar10) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);\n  }\n  uVar9 = uVar9 - uVar10;\n  local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n  pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10;\n  if (lVar8 - uVar10 < uVar9) {\n    uVar9 = lVar8 - uVar10;\n  }\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);\n  __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p;\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }\n    (this->soname_)._M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\nLAB_0024016a:\n  local_58.field_2._M_allocated_capacity = uVar4;\n  local_58._M_string_length = 0;\n  *local_58._M_dataplus._M_p = '\0';\n  if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }\n  return;\n}" { (declaration "string *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *paVar2;" (binary_expression "allocator<char>_>_9\n  *paVar2" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *paVar2" identifier * identifier)) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "Position_dependent_options *pPVar6;" type_identifier (pointer_declarator "*pPVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "pointer pcVar11;" type_identifier identifier ;) (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_>_9\n  *__dest;" (binary_expression "allocator<char>_>_9\n  *__dest" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n  *__dest" identifier * identifier)) ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> local_58;" (binary_expression "allocator<char>_> local_58" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) ;) (expression_statement "this_00 = &(this->super_Object).name_;" (assignment_expression "this_00 = &(this->super_Object).name_" identifier = (pointer_expression "&(this->super_Object).name_" & (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b39b0" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_003b39b0" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_003b39b0" & identifier))) ;) (expression_statement "(this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2;" (assignment_expression "(this->super_Object).name_._M_dataplus._M_p = (pointer)&(this->super_Object).name_.field_2" (field_expression "(this->super_Object).name_._M_dataplus._M_p" (field_expression "(this->super_Object).name_._M_dataplus" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->super_Object).name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->super_Object).name_.field_2" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar11 = (name->_M_dataplus)._M_p;" (assignment_expression "pcVar11 = (name->_M_dataplus)._M_p" identifier = (field_expression "(name->_M_dataplus)._M_p" (parenthesized_expression "(name->_M_dataplus)" ( (field_expression "name->_M_dataplus" identifier -> field_identifier) )) . field_identifier)) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length);" (binary_expression "_M_construct<char*>(this_00,pcVar11,pcVar11 + name->_M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(this_00,pcVar11,pcVar11 + name->_M_string_length)" ( (comma_expression "this_00,pcVar11,pcVar11 + name->_M_string_length" identifier , (comma_expression "pcVar11,pcVar11 + name->_M_string_length" identifier , (binary_expression "pcVar11 + name->_M_string_length" identifier + (field_expression "name->_M_string_length" identifier -> field_identifier)))) ))) ;)) (expression_statement "(this->super_Object).input_file_ = input_file;" (assignment_expression "(this->super_Object).input_file_ = input_file" (field_expression "(this->super_Object).input_file_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Object).offset_ = offset;" (assignment_expression "(this->super_Object).offset_ = offset" (field_expression "(this->super_Object).offset_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(this->super_Object).shnum_ = 0xffffffff;" (assignment_expression "(this->super_Object).shnum_ = 0xffffffff" (field_expression "(this->super_Object).shnum_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(this->super_Object).xindex_ = (Xindex *)0x0;" (assignment_expression "(this->super_Object).xindex_ = (Xindex *)0x0" (field_expression "(this->super_Object).xindex_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Xindex *)0x0" ( (type_descriptor "Xindex *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;" (assignment_expression "(this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1" (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(this->super_Object).field_0x3c & 0x80 | 1" (binary_expression "(this->super_Object).field_0x3c & 0x80" (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) & number_literal) | number_literal)) ;) (expression_statement "(this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0;" (assignment_expression "(this->super_Object).compressed_sections_ = (Compressed_section_map *)0x0" (field_expression "(this->super_Object).compressed_sections_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(Compressed_section_map *)0x0" ( (type_descriptor "Compressed_section_map *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (input_file == (Input_file *)0x0) {\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n    (this->soname_)._M_string_length = 0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }" if (parenthesized_expression "(input_file == (Input_file *)0x0)" ( (binary_expression "input_file == (Input_file *)0x0" identifier == (cast_expression "(Input_file *)0x0" ( (type_descriptor "Input_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (this->soname_).field_2._M_local_buf[0] = '\0';\n    (this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;\n    (this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;\n    (this->soname_)._M_string_length = 0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;\n                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */\n    std::string::_M_assign((string *)&this->soname_,(string *)name);\n    return;\n  }" { (expression_statement "(this->soname_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(this->soname_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(this->soname_).field_2._M_local_buf[0]" (field_expression "(this->soname_).field_2._M_local_buf" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2;" (assignment_expression "(this->soname_)._M_dataplus._M_p = (pointer)&(this->soname_).field_2" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->soname_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_003b4928" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_003b4928" & identifier))) ;) (expression_statement "(this->soname_)._M_string_length = 0;" (assignment_expression "(this->soname_)._M_string_length = 0" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (ERROR "(this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_start" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n    super__Vector_base<std" (field_expression "(this->needed_).\n    super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;" (assignment_expression "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET" (field_expression "this->unknown_needed_" identifier -> field_identifier) = identifier) ;) comment (labeled_statement "std::string::_M_assign((string *)&this->soname_,(string *)name);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)&this->soname_,(string *)name);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)&this->soname_,(string *)name);" (call_expression "_M_assign((string *)&this->soname_,(string *)name)" identifier (argument_list "((string *)&this->soname_,(string *)name)" ( (cast_expression "(string *)&this->soname_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->soname_" & (field_expression "this->soname_" identifier -> field_identifier))) , (cast_expression "(string *)name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;))) (return_statement "return;" return ;) })) (expression_statement "piVar1 = &(input_file->file_).object_count_;" (assignment_expression "piVar1 = &(input_file->file_).object_count_" identifier = (pointer_expression "&(input_file->file_).object_count_" & (field_expression "(input_file->file_).object_count_" (parenthesized_expression "(input_file->file_)" ( (field_expression "input_file->file_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) comment (ERROR "bVar5 = Input_file::" (assignment_expression "bVar5 = Input_file" identifier = identifier) : :) (expression_statement "is_in_system_directory(input_file);" (call_expression "is_in_system_directory(input_file)" identifier (argument_list "(input_file)" ( identifier ))) ;) (expression_statement "(this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5;" (assignment_expression "(this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | bVar5 << 5" (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(this->super_Object).field_0x3c & 0xdf | bVar5 << 5" (binary_expression "(this->super_Object).field_0x3c & 0xdf" (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) & number_literal) | (binary_expression "bVar5 << 5" identifier << number_literal))) ;) (ERROR "pPVar6 = Input_file::" (assignment_expression "pPVar6 = Input_file" identifier = identifier) : :) (expression_statement "options(input_file);" (call_expression "options(input_file)" identifier (argument_list "(input_file)" ( identifier ))) ;) (expression_statement "bVar5 = pPVar6->as_needed_;" (assignment_expression "bVar5 = pPVar6->as_needed_" identifier = (field_expression "pPVar6->as_needed_" identifier -> field_identifier)) ;) (expression_statement "paVar2 = &(this->soname_).field_2;" (assignment_expression "paVar2 = &(this->soname_).field_2" identifier = (pointer_expression "&(this->soname_).field_2" & (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "(this->soname_).field_2._M_local_buf[0] = '\0';" (assignment_expression "(this->soname_).field_2._M_local_buf[0] = '\0'" (subscript_expression "(this->soname_).field_2._M_local_buf[0]" (field_expression "(this->soname_).field_2._M_local_buf" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = (pointer)paVar2;" (assignment_expression "(this->soname_)._M_dataplus._M_p = (pointer)paVar2" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(pointer)paVar2" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (expression_statement "(this->soname_)._M_string_length = 0;" (assignment_expression "(this->soname_)._M_string_length = 0" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (ERROR "(this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_start = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n  ._M_impl._M_start" (field_expression "allocator<char>_>_>_>\n  ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "bVar3 = (this->super_Object).field_0x3c;" (assignment_expression "bVar3 = (this->super_Object).field_0x3c" identifier = (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier)) ;) (ERROR "(this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_finish = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n  ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n  ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(this->needed_).\n  super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(this->needed_).\n  super__Vector_base<std" (field_expression "(this->needed_).\n  super__Vector_base" (parenthesized_expression "(this->needed_)" ( (field_expression "this->needed_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n  ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;" (assignment_expression "this->unknown_needed_ = UNKNOWN_NEEDED_UNSET" (field_expression "this->unknown_needed_" identifier -> field_identifier) = identifier) ;) (expression_statement "(this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6);" (assignment_expression "(this->super_Object).field_0x3c = bVar3 & 0xbf | (byte)((bVar5 & 1) << 6)" (field_expression "(this->super_Object).field_0x3c" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (binary_expression "bVar3 & 0xbf | (byte)((bVar5 & 1) << 6)" (binary_expression "bVar3 & 0xbf" identifier & number_literal) | (call_expression "(byte)((bVar5 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar5 & 1) << 6)" ( (binary_expression "(bVar5 & 1) << 6" (parenthesized_expression "(bVar5 & 1)" ( (binary_expression "bVar5 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928;" (assignment_expression "(this->super_Object)._vptr_Object = (_func_int_varargs **)&DAT_003b4928" (field_expression "(this->super_Object)._vptr_Object" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&DAT_003b4928" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&DAT_003b4928" & identifier))) ;) comment (labeled_statement "std::string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" statement_identifier : (ERROR ":" :) (labeled_statement "string::_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" statement_identifier : (ERROR ":" :) (expression_statement "_M_assign((string *)&this->soname_,(string *)&input_file->found_name_);" (call_expression "_M_assign((string *)&this->soname_,(string *)&input_file->found_name_)" identifier (argument_list "((string *)&this->soname_,(string *)&input_file->found_name_)" ( (cast_expression "(string *)&this->soname_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->soname_" & (field_expression "this->soname_" identifier -> field_identifier))) , (cast_expression "(string *)&input_file->found_name_" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&input_file->found_name_" & (field_expression "input_file->found_name_" identifier -> field_identifier))) ))) ;))) (if_statement "if ((this->super_Object).offset_ == 0) {\n    return;\n  }" if (parenthesized_expression "((this->super_Object).offset_ == 0)" ( (binary_expression "(this->super_Object).offset_ == 0" (field_expression "(this->super_Object).offset_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (ERROR "lVar7 = std::" (assignment_expression "lVar7 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)this_00,'(',0);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_00,'(',0);" (call_expression "find((string *)this_00,'(',0)" identifier (argument_list "((string *)this_00,'(',0)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "'('" ' character ') , number_literal ))) ;)) (ERROR "lVar8 = std::" (assignment_expression "lVar8 = std" identifier = identifier) : :) (labeled_statement "string::find((string *)this_00,')',0);" statement_identifier : (ERROR ":" :) (expression_statement "find((string *)this_00,')',0);" (call_expression "find((string *)this_00,')',0)" identifier (argument_list "((string *)this_00,')',0)" ( (cast_expression "(string *)this_00" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (char_literal "')'" ' character ') , number_literal ))) ;)) (if_statement "if (lVar7 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar7 == -1)" ( (binary_expression "lVar7 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (lVar8 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar8 == -1)" ( (binary_expression "lVar8 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar9 = (this->super_Object).name_._M_string_length;" (assignment_expression "uVar9 = (this->super_Object).name_._M_string_length" identifier = (field_expression "(this->super_Object).name_._M_string_length" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar10 = lVar7 + 1;" (assignment_expression "uVar10 = lVar7 + 1" identifier = (binary_expression "lVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar9 < uVar10) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);\n  }" if (parenthesized_expression "(uVar9 < uVar10)" ( (binary_expression "uVar9 < uVar10" identifier < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */\n    std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);\n  }" { comment comment (labeled_statement "std::__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);" statement_identifier : (ERROR ":" :) (expression_statement "__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10);" (call_expression "__throw_out_of_range_fmt\n              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n               uVar10)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier ))) ;)) })) (expression_statement "uVar9 = uVar9 - uVar10;" (assignment_expression "uVar9 = uVar9 - uVar10" identifier = (binary_expression "uVar9 - uVar10" identifier - identifier)) ;) (expression_statement "local_58._M_dataplus._M_p = (pointer)&local_58.field_2;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)&local_58.field_2" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_58.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_58.field_2" identifier . field_identifier))) ;) (expression_statement "pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10;" (assignment_expression "pcVar11 = (this->super_Object).name_._M_dataplus._M_p + uVar10" identifier = (binary_expression "(this->super_Object).name_._M_dataplus._M_p + uVar10" (field_expression "(this->super_Object).name_._M_dataplus._M_p" (field_expression "(this->super_Object).name_._M_dataplus" (field_expression "(this->super_Object).name_" (parenthesized_expression "(this->super_Object)" ( (field_expression "this->super_Object" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier) + identifier)) ;) (if_statement "if (lVar8 - uVar10 < uVar9) {\n    uVar9 = lVar8 - uVar10;\n  }" if (parenthesized_expression "(lVar8 - uVar10 < uVar9)" ( (binary_expression "lVar8 - uVar10 < uVar9" (binary_expression "lVar8 - uVar10" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar9 = lVar8 - uVar10;\n  }" { (expression_statement "uVar9 = lVar8 - uVar10;" (assignment_expression "uVar9 = lVar8 - uVar10" identifier = (binary_expression "lVar8 - uVar10" identifier - identifier)) ;) })) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9);" (binary_expression "_M_construct<char_const*>(&local_58,pcVar11,pcVar11 + uVar9)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&local_58,pcVar11,pcVar11 + uVar9)" ( (comma_expression "&local_58,pcVar11,pcVar11 + uVar9" (pointer_expression "&local_58" & identifier) , (comma_expression "pcVar11,pcVar11 + uVar9" identifier , (binary_expression "pcVar11 + uVar9" identifier + identifier))) ))) ;)) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n            *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2) {\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }\n    (this->soname_)._M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }\n  else {\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p == &local_58.field_2" (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) == (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }\n    (this->soname_)._M_string_length = local_58._M_string_length;\n    __dest->_M_local_buf[local_58._M_string_length] = '\0';\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }" { (if_statement "if (local_58._M_string_length != 0) {\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }" if (parenthesized_expression "(local_58._M_string_length != 0)" ( (binary_expression "local_58._M_string_length != 0" (field_expression "local_58._M_string_length" identifier . field_identifier) != number_literal) )) (compound_statement "{\n      if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n    }" { (if_statement "if (local_58._M_string_length == 1) {\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }\n      else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }" if (parenthesized_expression "(local_58._M_string_length == 1)" ( (binary_expression "local_58._M_string_length == 1" (field_expression "local_58._M_string_length" identifier . field_identifier) == number_literal) )) (compound_statement "{\n        __dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }" { (expression_statement "__dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0];" (assignment_expression "__dest->_M_local_buf[0] = local_58.field_2._M_local_buf[0]" (subscript_expression "__dest->_M_local_buf[0]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "local_58.field_2._M_local_buf[0]" (field_expression "local_58.field_2._M_local_buf" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier) [ number_literal ])) ;) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }" else (compound_statement "{\n        memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);\n        __dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;\n      }" { (expression_statement "memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length);" (call_expression "memcpy(__dest,local_58._M_dataplus._M_p,local_58._M_string_length)" identifier (argument_list "(__dest,local_58._M_dataplus._M_p,local_58._M_string_length)" ( identifier , (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) , (field_expression "local_58._M_string_length" identifier . field_identifier) ))) ;) (expression_statement "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p;" (assignment_expression "__dest = (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p" identifier = (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus._M_p" (field_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)._M_dataplus" (call_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)(this->soname_)" (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                  *)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) (ERROR "*" *) )) (argument_list "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) ))) . field_identifier) . field_identifier)) ;) }))) })) (expression_statement "(this->soname_)._M_string_length = local_58._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_58._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "__dest->_M_local_buf[local_58._M_string_length] = '\0';" (assignment_expression "__dest->_M_local_buf[local_58._M_string_length] = '\0'" (subscript_expression "__dest->_M_local_buf[local_58._M_string_length]" (field_expression "__dest->_M_local_buf" identifier -> field_identifier) [ (field_expression "local_58._M_string_length" identifier . field_identifier) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar4 = local_58.field_2._M_allocated_capacity;" (assignment_expression "uVar4 = local_58.field_2._M_allocated_capacity" identifier = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }" else (compound_statement "{\n    if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }\n    local_58._M_dataplus._M_p = (pointer)&local_58.field_2;\n    uVar4 = local_58.field_2._M_allocated_capacity;\n  }" { (if_statement "if (__dest == paVar2) {\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }\n    else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }" if (parenthesized_expression "(__dest == paVar2)" ( (binary_expression "__dest == paVar2" identifier == identifier) )) (compound_statement "{\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n    }" { (expression_statement "(this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;" (assignment_expression "(this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_)._M_string_length = local_58._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_58._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "(this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;" (assignment_expression "(this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }) (else_clause "else {\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }" else (compound_statement "{\n      uVar4 = (this->soname_).field_2._M_allocated_capacity;\n      (this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;\n      (this->soname_)._M_string_length = local_58._M_string_length;\n      (this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;\n      local_58._M_dataplus._M_p = (pointer)__dest;\n      if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;\n    }" { (expression_statement "uVar4 = (this->soname_).field_2._M_allocated_capacity;" (assignment_expression "uVar4 = (this->soname_).field_2._M_allocated_capacity" identifier = (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p;" (assignment_expression "(this->soname_)._M_dataplus._M_p = local_58._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus._M_p" (field_expression "(this->soname_)._M_dataplus" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) ;) (expression_statement "(this->soname_)._M_string_length = local_58._M_string_length;" (assignment_expression "(this->soname_)._M_string_length = local_58._M_string_length" (field_expression "(this->soname_)._M_string_length" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) = (field_expression "local_58._M_string_length" identifier . field_identifier)) ;) (expression_statement "(this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity;" (assignment_expression "(this->soname_).field_2._M_allocated_capacity = local_58.field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2._M_allocated_capacity" (field_expression "(this->soname_).field_2" (parenthesized_expression "(this->soname_)" ( (field_expression "this->soname_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) (expression_statement "local_58._M_dataplus._M_p = (pointer)__dest;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)__dest" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (cast_expression "(pointer)__dest" ( (type_descriptor "pointer" type_identifier) ) identifier)) ;) (if_statement "if (__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0) goto LAB_0024016a;" if (parenthesized_expression "(__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0)" ( (binary_expression "__dest != (anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0)" identifier != (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n                     *)0x0)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n                     *)0x0" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n                     *)0x0" identifier * (ERROR ")" )) number_literal)) ))) )) (goto_statement "goto LAB_0024016a;" goto statement_identifier ;)) }))) (expression_statement "local_58._M_dataplus._M_p = (pointer)&local_58.field_2;" (assignment_expression "local_58._M_dataplus._M_p = (pointer)&local_58.field_2" (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) = (binary_expression "(pointer)&local_58.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_58.field_2" identifier . field_identifier))) ;) (expression_statement "uVar4 = local_58.field_2._M_allocated_capacity;" (assignment_expression "uVar4 = local_58.field_2._M_allocated_capacity" identifier = (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier)) ;) }))) (labeled_statement "LAB_0024016a:\n  local_58.field_2._M_allocated_capacity = uVar4;" statement_identifier : (expression_statement "local_58.field_2._M_allocated_capacity = uVar4;" (assignment_expression "local_58.field_2._M_allocated_capacity = uVar4" (field_expression "local_58.field_2._M_allocated_capacity" (field_expression "local_58.field_2" identifier . field_identifier) . field_identifier) = identifier) ;)) (expression_statement "local_58._M_string_length = 0;" (assignment_expression "local_58._M_string_length = 0" (field_expression "local_58._M_string_length" identifier . field_identifier) = number_literal) ;) (expression_statement "*local_58._M_dataplus._M_p = '\0';" (assignment_expression "*local_58._M_dataplus._M_p = '\0'" (pointer_expression "*local_58._M_dataplus._M_p" * (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2) {\n    operator_delete(local_58._M_dataplus._M_p);\n  }" if (parenthesized_expression "((anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2)" ( (parenthesized_expression "(anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2)" ( (ERROR "anon_union_16_2_edb7204a_for_basic_string<char,_std::char_traits<char>,_std::" (comma_expression "anon_union_16_2_edb7204a_for_basic_string<char,_std" (binary_expression "anon_union_16_2_edb7204a_for_basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p != &local_58.field_2" (binary_expression "allocator<char>_>_9\n       *)local_58._M_dataplus._M_p" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (binary_expression "_9\n       *)local_58._M_dataplus._M_p" identifier * (ERROR ")" )) (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier))) != (pointer_expression "&local_58.field_2" & (field_expression "local_58.field_2" identifier . field_identifier))) )) )) (compound_statement "{\n    operator_delete(local_58._M_dataplus._M_p);\n  }" { (expression_statement "operator_delete(local_58._M_dataplus._M_p);" (call_expression "operator_delete(local_58._M_dataplus._M_p)" identifier (argument_list "(local_58._M_dataplus._M_p)" ( (field_expression "local_58._M_dataplus._M_p" (field_expression "local_58._M_dataplus" identifier . field_identifier) . field_identifier) ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    \n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    \n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}\n\n" (function_definition "void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    \n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    \n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" identifier (parameter_list "(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    \n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    \n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "size_t local_50;" primitive_type identifier ;) (declaration "undefined8 local_48 [3];" type_identifier (array_declarator "local_48 [3]" identifier [ number_literal ]) ;) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = &DAT_003b39b0;" (assignment_expression "*param_1 = &DAT_003b39b0" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b39b0" & identifier)) ;) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "param_1 + 3" identifier + number_literal)) ;) (expression_statement "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);" (call_expression "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2)" identifier (argument_list "(puVar9,*param_2,param_2[1] + *param_2)" ( identifier , (pointer_expression "*param_2" * identifier) , (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (pointer_expression "*param_2" * identifier)) ))) ;) (expression_statement "param_1[5] = param_3;" (assignment_expression "param_1[5] = param_3" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[6] = param_4;" (assignment_expression "param_1[6] = param_4" (subscript_expression "param_1[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_1 + 7) = 0xffffffff;" (assignment_expression "*(undefined4 *)(param_1 + 7) = 0xffffffff" (pointer_expression "*(undefined4 *)(param_1 + 7)" * (cast_expression "(undefined4 *)(param_1 + 7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 7)" ( (binary_expression "param_1 + 7" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" { (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b4928" & identifier)) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" * (cast_expression "(undefined4 *)(param_1 + 0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "FUN_0027d940(param_1 + 10,param_2);" (call_expression "FUN_0027d940(param_1 + 10,param_2)" identifier (argument_list "(param_1 + 10,param_2)" ( (binary_expression "param_1 + 10" identifier + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })) (expression_statement "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;" (assignment_expression "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" * (cast_expression "(int *)(param_3 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) = (binary_expression "*(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" * (cast_expression "(int *)(param_3 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x50)" ( (binary_expression "param_3 + 0x50" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar3 = FUN_0016afa0(param_3);" (assignment_expression "uVar3 = FUN_0016afa0(param_3)" identifier = (call_expression "FUN_0016afa0(param_3)" identifier (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (call_expression "(byte)((uVar3 & 1) << 5)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((uVar3 & 1) << 5)" ( (binary_expression "(uVar3 & 1) << 5" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "pbVar4 = (byte *)FUN_0016af80(param_3);" (assignment_expression "pbVar4 = (byte *)FUN_0016af80(param_3)" identifier = (cast_expression "(byte *)FUN_0016af80(param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016af80(param_3)" identifier (argument_list "(param_3)" ( identifier ))))) ;) (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" * (cast_expression "(undefined1 *)(param_1 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xc" identifier + number_literal)) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" * (cast_expression "(undefined4 *)(param_1 + 0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x11)" ( (binary_expression "param_1 + 0x11" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" * (cast_expression "(byte *)((long)param_1 + 0x3c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x3c)" ( (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) | (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((bVar1 & 1) << 6)" ( (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) << number_literal) ))))) ;) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" * identifier) = (pointer_expression "&DAT_003b4928" & identifier)) ;) (expression_statement "FUN_0027d940(param_1 + 10,param_3 + 8);" (call_expression "FUN_0027d940(param_1 + 10,param_3 + 8)" identifier (argument_list "(param_1 + 10,param_3 + 8)" ( (binary_expression "param_1 + 10" identifier + number_literal) , (binary_expression "param_3 + 8" identifier + number_literal) ))) ;) (if_statement "if (param_1[6] == 0) {\n    return;\n  }" if (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "lVar5 = FUN_0027f490(puVar9,0x28,0);" (assignment_expression "lVar5 = FUN_0027f490(puVar9,0x28,0)" identifier = (call_expression "FUN_0027f490(puVar9,0x28,0)" identifier (argument_list "(puVar9,0x28,0)" ( identifier , number_literal , number_literal )))) ;) (expression_statement "lVar6 = FUN_0027f490(puVar9,0x29,0);" (assignment_expression "lVar6 = FUN_0027f490(puVar9,0x29,0)" identifier = (call_expression "FUN_0027f490(puVar9,0x29,0)" identifier (argument_list "(puVar9,0x29,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (lVar5 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar5 == -1)" ( (binary_expression "lVar5 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (if_statement "if (lVar6 == -1) {\n    return;\n  }" if (parenthesized_expression "(lVar6 == -1)" ( (binary_expression "lVar6 == -1" identifier == number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "uVar8 = lVar5 + 1;" (assignment_expression "uVar8 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" if (parenthesized_expression "((ulong)param_1[2] < uVar8)" ( (binary_expression "(ulong)param_1[2] < uVar8" (cast_expression "(ulong)param_1[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_1[2]" identifier [ number_literal ])) < identifier) )) (compound_statement "{\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" { (expression_statement "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);" (call_expression "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" identifier (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" ( (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" " string_content ") , (string_literal ""basic_string::substr"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar7 = param_1[2] - uVar8;" (assignment_expression "uVar7 = param_1[2] - uVar8" identifier = (binary_expression "param_1[2] - uVar8" (subscript_expression "param_1[2]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (if_statement "if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }" if (parenthesized_expression "(lVar6 - uVar8 < uVar7)" ( (binary_expression "lVar6 - uVar8 < uVar7" (binary_expression "lVar6 - uVar8" identifier - identifier) < identifier) )) (compound_statement "{\n    uVar7 = lVar6 - uVar8;\n  }" { (expression_statement "uVar7 = lVar6 - uVar8;" (assignment_expression "uVar7 = lVar6 - uVar8" identifier = (binary_expression "lVar6 - uVar8" identifier - identifier)) ;) })) (expression_statement "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);" (call_expression "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" identifier (argument_list "(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" ( (pointer_expression "&local_58" & identifier) , (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) , (binary_expression "param_1[1] + uVar8 + uVar7" (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) + identifier) ))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" if (parenthesized_expression "(local_58 == local_48)" ( (binary_expression "local_58 == local_48" identifier == identifier) )) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" { (if_statement "if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" if (parenthesized_expression "(local_50 == 1)" ( (binary_expression "local_50 == 1" identifier == number_literal) )) (compound_statement "{\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }" { (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)puVar9" * (cast_expression "(undefined1 *)puVar9" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_48[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_48[0]" identifier [ number_literal ]))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" else (compound_statement "{\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" { (expression_statement "memcpy(puVar9,local_58,local_50);" (call_expression "memcpy(puVar9,local_58,local_50)" identifier (argument_list "(puVar9,local_58,local_50)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" identifier = (cast_expression "(undefined8 *)param_1[10]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[10]" identifier [ number_literal ]))) ;) }))) })) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)((long)puVar9 + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + local_50) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + local_50)" * (cast_expression "(undefined1 *)((long)puVar9 + local_50)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar9 + local_50)" ( (binary_expression "(long)puVar9 + local_50" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" else (compound_statement "{\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" { (if_statement "if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" if (parenthesized_expression "(puVar9 == param_1 + 0xc)" ( (binary_expression "puVar9 == param_1 + 0xc" identifier == (binary_expression "param_1 + 0xc" identifier + number_literal)) )) (compound_statement "{\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }" { (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" else (compound_statement "{\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" { (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) (expression_statement "local_58 = puVar9;" (assignment_expression "local_58 = puVar9" identifier = identifier) ;) (if_statement "if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;" 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)) )) (goto_statement "goto LAB_0024016a;" goto statement_identifier ;)) }))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" identifier = identifier) ;) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" identifier = (subscript_expression "local_48[0]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0024016a:\n  local_48[0] = uVar2;" statement_identifier : (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" * (cast_expression "(undefined1 *)local_58" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (if_statement "if (local_58 != local_48) {\n    FUN_00276d20();\n  }" if (parenthesized_expression "(local_58 != local_48)" ( (binary_expression "local_58 != local_48" identifier != identifier) )) (compound_statement "{\n    FUN_00276d20();\n  }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) , (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)\n\n{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    \n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    \n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0023ff80(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" (identifier "FUN_0023ff80") (parameter_list "(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined8 uVar2;\n  uint uVar3;\n  byte *pbVar4;\n  long lVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *local_58;\n  size_t local_50;\n  undefined8 local_48 [3];\n  \n  puVar9 = param_1 + 1;\n  *param_1 = &DAT_003b39b0;\n  param_1[1] = param_1 + 3;\n  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);\n  param_1[5] = param_3;\n  param_1[6] = param_4;\n  *(undefined4 *)(param_1 + 7) = 0xffffffff;\n  param_1[8] = 0;\n  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;\n  param_1[9] = 0;\n  if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }\n  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;\n                    \n  uVar3 = FUN_0016afa0(param_3);\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);\n  pbVar4 = (byte *)FUN_0016af80(param_3);\n  bVar1 = *pbVar4;\n  *(undefined1 *)(param_1 + 0xc) = 0;\n  param_1[10] = param_1 + 0xc;\n  param_1[0xb] = 0;\n  param_1[0xe] = 0;\n  param_1[0xf] = 0;\n  param_1[0x10] = 0;\n  *(undefined4 *)(param_1 + 0x11) = 0;\n  *(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);\n  *param_1 = &DAT_003b4928;\n                    \n  FUN_0027d940(param_1 + 10,param_3 + 8);\n  if (param_1[6] == 0) {\n    return;\n  }\n  lVar5 = FUN_0027f490(puVar9,0x28,0);\n  lVar6 = FUN_0027f490(puVar9,0x29,0);\n  if (lVar5 == -1) {\n    return;\n  }\n  if (lVar6 == -1) {\n    return;\n  }\n  uVar8 = lVar5 + 1;\n  if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }\n  uVar7 = param_1[2] - uVar8;\n  local_58 = local_48;\n  if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }\n  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);\n  puVar9 = (undefined8 *)param_1[10];\n  if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }\nLAB_0024016a:\n  local_48[0] = uVar2;\n  local_50 = 0;\n  *(undefined1 *)local_58 = 0;\n  if (local_58 != local_48) {\n    FUN_00276d20();\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "size_t local_50;" (primitive_type "size_t") (identifier "local_50") (; ";")) (declaration "undefined8 local_48 [3];" (type_identifier "undefined8") (array_declarator "local_48 [3]" (identifier "local_48") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "puVar9 = param_1 + 1;" (assignment_expression "puVar9 = param_1 + 1" (identifier "puVar9") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = &DAT_003b39b0;" (assignment_expression "*param_1 = &DAT_003b39b0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_003b39b0" (& "&") (identifier "DAT_003b39b0"))) (; ";")) (expression_statement "param_1[1] = param_1 + 3;" (assignment_expression "param_1[1] = param_1 + 3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);" (call_expression "FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2)" (identifier "FUN_0015d030") (argument_list "(puVar9,*param_2,param_2[1] + *param_2)" (( "(") (identifier "puVar9") (, ",") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (binary_expression "param_2[1] + *param_2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) (; ";")) (expression_statement "param_1[5] = param_3;" (assignment_expression "param_1[5] = param_3" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[6] = param_4;" (assignment_expression "param_1[6] = param_4" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 7) = 0xffffffff;" (assignment_expression "*(undefined4 *)(param_1 + 7) = 0xffffffff" (pointer_expression "*(undefined4 *)(param_1 + 7)" (* "*") (cast_expression "(undefined4 *)(param_1 + 7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 7)" (( "(") (binary_expression "param_1 + 7" (identifier "param_1") (+ "+") (number_literal "7")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;" (assignment_expression "*(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80 | 1" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0x80" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "0x80")) (| "|") (number_literal "1"))) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 == 0) {\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined1 *)(param_1 + 0xc) = 0;\n    param_1[10] = param_1 + 0xc;\n    *param_1 = &DAT_003b4928;\n    param_1[0xb] = 0;\n    param_1[0xe] = 0;\n    param_1[0xf] = 0;\n    param_1[0x10] = 0;\n    *(undefined4 *)(param_1 + 0x11) = 0;\n                    \n    FUN_0027d940(param_1 + 10,param_2);\n    return;\n  }" ({ "{") (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_003b4928" (& "&") (identifier "DAT_003b4928"))) (; ";")) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11)" (( "(") (binary_expression "param_1 + 0x11" (identifier "param_1") (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0027d940(param_1 + 10,param_2);" (call_expression "FUN_0027d940(param_1 + 10,param_2)" (identifier "FUN_0027d940") (argument_list "(param_1 + 10,param_2)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;" (assignment_expression "*(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" (* "*") (cast_expression "(int *)(param_3 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x50)" (( "(") (binary_expression "param_3 + 0x50" (identifier "param_3") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (binary_expression "*(int *)(param_3 + 0x50) + 1" (pointer_expression "*(int *)(param_3 + 0x50)" (* "*") (cast_expression "(int *)(param_3 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x50)" (( "(") (binary_expression "param_3 + 0x50" (identifier "param_3") (+ "+") (number_literal "0x50")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar3 = FUN_0016afa0(param_3);" (assignment_expression "uVar3 = FUN_0016afa0(param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_0016afa0(param_3)" (identifier "FUN_0016afa0") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xdf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "0xdf")) (| "|") (call_expression "(byte)((uVar3 & 1) << 5)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((uVar3 & 1) << 5)" (( "(") (binary_expression "(uVar3 & 1) << 5" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "pbVar4 = (byte *)FUN_0016af80(param_3);" (assignment_expression "pbVar4 = (byte *)FUN_0016af80(param_3)" (identifier "pbVar4") (= "=") (cast_expression "(byte *)FUN_0016af80(param_3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0016af80(param_3)" (identifier "FUN_0016af80") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "bVar1 = *pbVar4;" (assignment_expression "bVar1 = *pbVar4" (identifier "bVar1") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0xc) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xc) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[10] = param_1 + 0xc;" (assignment_expression "param_1[10] = param_1 + 0xc" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xe] = 0;" (assignment_expression "param_1[0xe] = 0" (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xf] = 0;" (assignment_expression "param_1[0xf] = 0" (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x11) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x11) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x11)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x11)" (( "(") (binary_expression "param_1 + 0x11" (identifier "param_1") (+ "+") (number_literal "0x11")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);" (assignment_expression "*(byte *)((long)param_1 + 0x3c) =\n       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (= "=") (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6)" (binary_expression "*(byte *)((long)param_1 + 0x3c) & 0xbf" (pointer_expression "*(byte *)((long)param_1 + 0x3c)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x3c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x3c)" (( "(") (binary_expression "(long)param_1 + 0x3c" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x3c")) () ")")))) (& "&") (number_literal "0xbf")) (| "|") (call_expression "(byte)((bVar1 & 1) << 6)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((bVar1 & 1) << 6)" (( "(") (binary_expression "(bVar1 & 1) << 6" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (<< "<<") (number_literal "6")) () ")"))))) (; ";")) (expression_statement "*param_1 = &DAT_003b4928;" (assignment_expression "*param_1 = &DAT_003b4928" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "&DAT_003b4928" (& "&") (identifier "DAT_003b4928"))) (; ";")) (expression_statement "FUN_0027d940(param_1 + 10,param_3 + 8);" (call_expression "FUN_0027d940(param_1 + 10,param_3 + 8)" (identifier "FUN_0027d940") (argument_list "(param_1 + 10,param_3 + 8)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (, ",") (binary_expression "param_3 + 8" (identifier "param_3") (+ "+") (number_literal "8")) () ")"))) (; ";")) (if_statement "if (param_1[6] == 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_1[6] == 0)" (( "(") (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "lVar5 = FUN_0027f490(puVar9,0x28,0);" (assignment_expression "lVar5 = FUN_0027f490(puVar9,0x28,0)" (identifier "lVar5") (= "=") (call_expression "FUN_0027f490(puVar9,0x28,0)" (identifier "FUN_0027f490") (argument_list "(puVar9,0x28,0)" (( "(") (identifier "puVar9") (, ",") (number_literal "0x28") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "lVar6 = FUN_0027f490(puVar9,0x29,0);" (assignment_expression "lVar6 = FUN_0027f490(puVar9,0x29,0)" (identifier "lVar6") (= "=") (call_expression "FUN_0027f490(puVar9,0x29,0)" (identifier "FUN_0027f490") (argument_list "(puVar9,0x29,0)" (( "(") (identifier "puVar9") (, ",") (number_literal "0x29") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (lVar5 == -1) {\n    return;\n  }" (if "if") (parenthesized_expression "(lVar5 == -1)" (( "(") (binary_expression "lVar5 == -1" (identifier "lVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (lVar6 == -1) {\n    return;\n  }" (if "if") (parenthesized_expression "(lVar6 == -1)" (( "(") (binary_expression "lVar6 == -1" (identifier "lVar6") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar8 = lVar5 + 1;" (assignment_expression "uVar8 = lVar5 + 1" (identifier "uVar8") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((ulong)param_1[2] < uVar8) {\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" (if "if") (parenthesized_expression "((ulong)param_1[2] < uVar8)" (( "(") (binary_expression "(ulong)param_1[2] < uVar8" (cast_expression "(ulong)param_1[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (< "<") (identifier "uVar8")) () ")")) (compound_statement "{\n                    \n                    \n    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);\n  }" ({ "{") (expression_statement "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8);" (call_expression "FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" (identifier "FUN_002b56d0") (argument_list "("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",\n                 uVar8)" (( "(") (string_literal ""%s: __pos (which is %zu) > this->size() (which is %zu)"" (" """) (string_content "%s: __pos (which is %zu) > this->size() (which is %zu)") (" """)) (, ",") (string_literal ""basic_string::substr"" (" """) (string_content "basic_string::substr") (" """)) (, ",") (identifier "uVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = param_1[2] - uVar8;" (assignment_expression "uVar7 = param_1[2] - uVar8" (identifier "uVar7") (= "=") (binary_expression "param_1[2] - uVar8" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "uVar8"))) (; ";")) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (if_statement "if (lVar6 - uVar8 < uVar7) {\n    uVar7 = lVar6 - uVar8;\n  }" (if "if") (parenthesized_expression "(lVar6 - uVar8 < uVar7)" (( "(") (binary_expression "lVar6 - uVar8 < uVar7" (binary_expression "lVar6 - uVar8" (identifier "lVar6") (- "-") (identifier "uVar8")) (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n    uVar7 = lVar6 - uVar8;\n  }" ({ "{") (expression_statement "uVar7 = lVar6 - uVar8;" (assignment_expression "uVar7 = lVar6 - uVar8" (identifier "uVar7") (= "=") (binary_expression "lVar6 - uVar8" (identifier "lVar6") (- "-") (identifier "uVar8"))) (; ";")) (} "}"))) (expression_statement "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);" (call_expression "FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" (identifier "FUN_0015cbe0") (argument_list "(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7)" (( "(") (pointer_expression "&local_58" (& "&") (identifier "local_58")) (, ",") (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar8")) (, ",") (binary_expression "param_1[1] + uVar8 + uVar7" (binary_expression "param_1[1] + uVar8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar8")) (+ "+") (identifier "uVar7")) () ")"))) (; ";")) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if (local_58 == local_48) {\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }\n  else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" (if "if") (parenthesized_expression "(local_58 == local_48)" (( "(") (binary_expression "local_58 == local_48" (identifier "local_58") (== "==") (identifier "local_48")) () ")")) (compound_statement "{\n    if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }\n    param_1[0xb] = local_50;\n    *(undefined1 *)((long)puVar9 + local_50) = 0;\n    uVar2 = local_48[0];\n  }" ({ "{") (if_statement "if (local_50 != 0) {\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }\n    }" ({ "{") (if_statement "if (local_50 == 1) {\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }\n      else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" (if "if") (parenthesized_expression "(local_50 == 1)" (( "(") (binary_expression "local_50 == 1" (identifier "local_50") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        *(undefined1 *)puVar9 = (undefined1)local_48[0];\n        puVar9 = (undefined8 *)param_1[10];\n      }" ({ "{") (expression_statement "*(undefined1 *)puVar9 = (undefined1)local_48[0];" (assignment_expression "*(undefined1 *)puVar9 = (undefined1)local_48[0]" (pointer_expression "*(undefined1 *)puVar9" (* "*") (cast_expression "(undefined1 *)puVar9" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar9"))) (= "=") (cast_expression "(undefined1)local_48[0]" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")))) (; ";")) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" (else "else") (compound_statement "{\n        memcpy(puVar9,local_58,local_50);\n        puVar9 = (undefined8 *)param_1[10];\n      }" ({ "{") (expression_statement "memcpy(puVar9,local_58,local_50);" (call_expression "memcpy(puVar9,local_58,local_50)" (identifier "memcpy") (argument_list "(puVar9,local_58,local_50)" (( "(") (identifier "puVar9") (, ",") (identifier "local_58") (, ",") (identifier "local_50") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined8 *)param_1[10];" (assignment_expression "puVar9 = (undefined8 *)param_1[10]" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)param_1[10]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")))) (; ";")) (} "}")))) (} "}"))) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "*(undefined1 *)((long)puVar9 + local_50) = 0;" (assignment_expression "*(undefined1 *)((long)puVar9 + local_50) = 0" (pointer_expression "*(undefined1 *)((long)puVar9 + local_50)" (* "*") (cast_expression "(undefined1 *)((long)puVar9 + local_50)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar9 + local_50)" (( "(") (binary_expression "(long)puVar9 + local_50" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (+ "+") (identifier "local_50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" (identifier "uVar2") (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" (else "else") (compound_statement "{\n    if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }\n    local_58 = local_48;\n    uVar2 = local_48[0];\n  }" ({ "{") (if_statement "if (puVar9 == param_1 + 0xc) {\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }\n    else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" (if "if") (parenthesized_expression "(puVar9 == param_1 + 0xc)" (( "(") (binary_expression "puVar9 == param_1 + 0xc" (identifier "puVar9") (== "==") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc"))) () ")")) (compound_statement "{\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n    }" ({ "{") (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" (else "else") (compound_statement "{\n      uVar2 = param_1[0xc];\n      param_1[10] = local_58;\n      param_1[0xb] = local_50;\n      param_1[0xc] = local_48[0];\n      local_58 = puVar9;\n      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;\n    }" ({ "{") (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" (identifier "uVar2") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "param_1[10] = local_58;" (assignment_expression "param_1[10] = local_58" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "local_58")) (; ";")) (expression_statement "param_1[0xb] = local_50;" (assignment_expression "param_1[0xb] = local_50" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "param_1[0xc] = local_48[0];" (assignment_expression "param_1[0xc] = local_48[0]" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "local_58 = puVar9;" (assignment_expression "local_58 = puVar9" (identifier "local_58") (= "=") (identifier "puVar9")) (; ";")) (if_statement "if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;" (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"))) () ")")) (goto_statement "goto LAB_0024016a;" (goto "goto") (statement_identifier "LAB_0024016a") (; ";"))) (} "}")))) (expression_statement "local_58 = local_48;" (assignment_expression "local_58 = local_48" (identifier "local_58") (= "=") (identifier "local_48")) (; ";")) (expression_statement "uVar2 = local_48[0];" (assignment_expression "uVar2 = local_48[0]" (identifier "uVar2") (= "=") (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_0024016a:\n  local_48[0] = uVar2;" (statement_identifier "LAB_0024016a") (: ":") (expression_statement "local_48[0] = uVar2;" (assignment_expression "local_48[0] = uVar2" (subscript_expression "local_48[0]" (identifier "local_48") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar2")) (; ";"))) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)local_58 = 0;" (assignment_expression "*(undefined1 *)local_58 = 0" (pointer_expression "*(undefined1 *)local_58" (* "*") (cast_expression "(undefined1 *)local_58" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58"))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_58 != local_48) {\n    FUN_00276d20();\n  }" (if "if") (parenthesized_expression "(local_58 != local_48)" (( "(") (binary_expression "local_58 != local_48" (identifier "local_58") (!= "!=") (identifier "local_48")) () ")")) (compound_statement "{\n    FUN_00276d20();\n  }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void Dynobj(Dynobj * this, string * name, Input_file * input_file,
   off_t offset) */

void __thiscall gold::function_1::function_1(function_1 *this,type_1 *name,type_2 *var_10,type_3 offset)

{
  type_1 *this_00;
  int *piVar1;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_5;
  type_4 var_15;
  type_5 uVar4;
  bool var_13;
  type_6 *pPVar6;
  long var_17;
  long var_18;
  type_7 var_19;
  type_7 var_20;
  type_8 var_9;
  anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
  *var_6;
  basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3> var_7;
  
  this_00 = &(this->super_Object).name_;
  (this->super_Object)._vptr_Object = (type_9 **)&DAT_003b39b0;
  (this->super_Object).name_._M_dataplus._M_p = (type_8)&(this->super_Object).name_.field_2;
  var_9 = (name->_M_dataplus)._M_p;
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_8<var_2*>(this_00,var_9,var_9 + name->_M_string_length);
  (this->super_Object).input_file_ = var_10;
  (this->super_Object).offset_ = offset;
  (this->super_Object).shnum_ = 0xffffffff;
  (this->super_Object).xindex_ = (type_10 *)0x0;
  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0x80 | 1;
  (this->super_Object).compressed_sections_ = (type_11 *)0x0;
  if (var_10 == (type_2 *)0x0) {
    (this->soname_).field_2._M_local_buf[0] = '\0';
    (this->soname_)._M_dataplus._M_p = (type_8)&(this->soname_).field_2;
    (this->super_Object)._vptr_Object = (type_9 **)&DAT_003b4928;
    (this->soname_)._M_string_length = 0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_start = (type_8)0x0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_finish = (type_8)0x0;
    (this->needed_).
    super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_end_of_storage = (type_8)0x0;
    this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */
    std::string::var_11((type_1 *)&this->soname_,(type_1 *)name);
    return;
  }
  piVar1 = &(var_10->file_).object_count_;
  *piVar1 = *piVar1 + 1;
                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */
  var_13 = type_2::var_12(var_10);
  (this->super_Object).field_0x3c = (this->super_Object).field_0x3c & 0xdf | var_13 << 5;
  pPVar6 = type_2::var_14(var_10);
  var_13 = pPVar6->as_needed_;
  var_5 = &(this->soname_).field_2;
  (this->soname_).field_2._M_local_buf[0] = '\0';
  (this->soname_)._M_dataplus._M_p = (type_8)var_5;
  (this->soname_)._M_string_length = 0;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
  ._M_impl._M_start = (type_8)0x0;
  var_15 = (this->super_Object).field_0x3c;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
  ._M_impl._M_finish = (type_8)0x0;
  (this->needed_).
  super__Vector_base<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>,_std::var_1<std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_3>var_3>
  ._M_impl._M_end_of_storage = (type_8)0x0;
  this->unknown_needed_ = UNKNOWN_NEEDED_UNSET;
  (this->super_Object).field_0x3c = var_15 & 0xbf | (type_4)((var_13 & 1) << 6);
  (this->super_Object)._vptr_Object = (type_9 **)&DAT_003b4928;
                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */
  std::string::var_11((type_1 *)&this->soname_,(type_1 *)&var_10->found_name_);
  if ((this->super_Object).offset_ == 0) {
    return;
  }
  var_17 = std::string::var_16((type_1 *)this_00,'(',0);
  var_18 = std::string::var_16((type_1 *)this_00,')',0);
  if (var_17 == -1) {
    return;
  }
  if (var_18 == -1) {
    return;
  }
  var_19 = (this->super_Object).name_._M_string_length;
  var_20 = var_17 + 1;
  if (var_19 < var_20) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */
    std::var_21
              ("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
               var_20);
  }
  var_19 = var_19 - var_20;
  var_7._M_dataplus._M_p = (type_8)&var_7.field_2;
  var_9 = (this->super_Object).name_._M_dataplus._M_p + var_20;
  if (var_18 - var_20 < var_19) {
    var_19 = var_18 - var_20;
  }
  std::__cxx11::basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>::
  var_8<var_22*>(&var_7,var_9,var_9 + var_19);
  var_6 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
            *)(this->soname_)._M_dataplus._M_p;
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_7._M_dataplus._M_p == &var_7.field_2) {
    if (var_7._M_string_length != 0) {
      if (var_7._M_string_length == 1) {
        var_6->_M_local_buf[0] = var_7.field_2._M_local_buf[0];
        var_6 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                  *)(this->soname_)._M_dataplus._M_p;
      }
      else {
        var_23(var_6,var_7._M_dataplus._M_p,var_7._M_string_length);
        var_6 = (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                  *)(this->soname_)._M_dataplus._M_p;
      }
    }
    (this->soname_)._M_string_length = var_7._M_string_length;
    var_6->_M_local_buf[var_7._M_string_length] = '\0';
    uVar4 = var_7.field_2._M_allocated_capacity;
  }
  else {
    if (var_6 == var_5) {
      (this->soname_)._M_dataplus._M_p = var_7._M_dataplus._M_p;
      (this->soname_)._M_string_length = var_7._M_string_length;
      (this->soname_).field_2._M_allocated_capacity = var_7.field_2._M_allocated_capacity;
    }
    else {
      uVar4 = (this->soname_).field_2._M_allocated_capacity;
      (this->soname_)._M_dataplus._M_p = var_7._M_dataplus._M_p;
      (this->soname_)._M_string_length = var_7._M_string_length;
      (this->soname_).field_2._M_allocated_capacity = var_7.field_2._M_allocated_capacity;
      var_7._M_dataplus._M_p = (type_8)var_6;
      if (var_6 != (anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
                     *)0x0) goto LAB_0024016a;
    }
    var_7._M_dataplus._M_p = (type_8)&var_7.field_2;
    uVar4 = var_7.field_2._M_allocated_capacity;
  }
LAB_0024016a:
  var_7.field_2._M_allocated_capacity = uVar4;
  var_7._M_string_length = 0;
  *var_7._M_dataplus._M_p = '\0';
  if ((anon_union_16_2_edb7204a_for_basic_string<var_2,_std::char_traits<var_2>,_std::var_1<var_2>var_3>var_4
       *)var_7._M_dataplus._M_p != &var_7.field_2) {
    var_24(var_7._M_dataplus._M_p);
  }
  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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))))) (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement))))

void MASKED(undefined8 *param_1,long *param_2,long param_3,undefined8 param_4)

{
  byte bVar1;
  undefined8 uVar2;
  uint uVar3;
  byte *pbVar4;
  long lVar5;
  long lVar6;
  ulong uVar7;
  ulong uVar8;
  undefined8 *puVar9;
  undefined8 *local_58;
  size_t local_50;
  undefined8 local_48 [3];
  
  puVar9 = param_1 + 1;
  *param_1 = &DAT_003b39b0;
  param_1[1] = param_1 + 3;
  FUN_0015d030(puVar9,*param_2,param_2[1] + *param_2);
  param_1[5] = param_3;
  param_1[6] = param_4;
  *(undefined4 *)(param_1 + 7) = 0xffffffff;
  param_1[8] = 0;
  *(byte *)((long)param_1 + 0x3c) = *(byte *)((long)param_1 + 0x3c) & 0x80 | 1;
  param_1[9] = 0;
  if (param_3 == 0) {
    *(undefined1 *)(param_1 + 0xc) = 0;
    param_1[10] = param_1 + 0xc;
    *param_1 = &DAT_003b4928;
    param_1[0xb] = 0;
    param_1[0xe] = 0;
    param_1[0xf] = 0;
    param_1[0x10] = 0;
    *(undefined4 *)(param_1 + 0x11) = 0;
                    /* try { // try from 002401e2 to 002401e6 has its CatchHandler @ 0024027d */
    FUN_0027d940(param_1 + 10,param_2);
    return;
  }
  *(int *)(param_3 + 0x50) = *(int *)(param_3 + 0x50) + 1;
                    /* try { // try from 00240008 to 00240028 has its CatchHandler @ 00240275 */
  uVar3 = FUN_0016afa0(param_3);
  *(byte *)((long)param_1 + 0x3c) =
       *(byte *)((long)param_1 + 0x3c) & 0xdf | (byte)((uVar3 & 1) << 5);
  pbVar4 = (byte *)FUN_0016af80(param_3);
  bVar1 = *pbVar4;
  *(undefined1 *)(param_1 + 0xc) = 0;
  param_1[10] = param_1 + 0xc;
  param_1[0xb] = 0;
  param_1[0xe] = 0;
  param_1[0xf] = 0;
  param_1[0x10] = 0;
  *(undefined4 *)(param_1 + 0x11) = 0;
  *(byte *)((long)param_1 + 0x3c) =
       *(byte *)((long)param_1 + 0x3c) & 0xbf | (byte)((bVar1 & 1) << 6);
  *param_1 = &DAT_003b4928;
                    /* try { // try from 00240094 to 0024011c has its CatchHandler @ 00240285 */
  FUN_0027d940(param_1 + 10,param_3 + 8);
  if (param_1[6] == 0) {
    return;
  }
  lVar5 = FUN_0027f490(puVar9,0x28,0);
  lVar6 = FUN_0027f490(puVar9,0x29,0);
  if (lVar5 == -1) {
    return;
  }
  if (lVar6 == -1) {
    return;
  }
  uVar8 = lVar5 + 1;
  if ((ulong)param_1[2] < uVar8) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 00240270 to 00240274 has its CatchHandler @ 00240285 */
    FUN_002b56d0("%s: __pos (which is %zu) > this->size() (which is %zu)","basic_string::substr",
                 uVar8);
  }
  uVar7 = param_1[2] - uVar8;
  local_58 = local_48;
  if (lVar6 - uVar8 < uVar7) {
    uVar7 = lVar6 - uVar8;
  }
  FUN_0015cbe0(&local_58,param_1[1] + uVar8,param_1[1] + uVar8 + uVar7);
  puVar9 = (undefined8 *)param_1[10];
  if (local_58 == local_48) {
    if (local_50 != 0) {
      if (local_50 == 1) {
        *(undefined1 *)puVar9 = (undefined1)local_48[0];
        puVar9 = (undefined8 *)param_1[10];
      }
      else {
        memcpy(puVar9,local_58,local_50);
        puVar9 = (undefined8 *)param_1[10];
      }
    }
    param_1[0xb] = local_50;
    *(undefined1 *)((long)puVar9 + local_50) = 0;
    uVar2 = local_48[0];
  }
  else {
    if (puVar9 == param_1 + 0xc) {
      param_1[10] = local_58;
      param_1[0xb] = local_50;
      param_1[0xc] = local_48[0];
    }
    else {
      uVar2 = param_1[0xc];
      param_1[10] = local_58;
      param_1[0xb] = local_50;
      param_1[0xc] = local_48[0];
      local_58 = puVar9;
      if (puVar9 != (undefined8 *)0x0) goto LAB_0024016a;
    }
    local_58 = local_48;
    uVar2 = local_48[0];
  }
LAB_0024016a:
  local_48[0] = uVar2;
  local_50 = 0;
  *(undefined1 *)local_58 = 0;
  if (local_58 != local_48) {
    FUN_00276d20();
  }
  return;
}

